在GitHub上进行rebase后,由x次提交领先,落后y次提交

5

最近我通过以下代码将前y个提交合并为一个:

git rebase -i HEAD~y --> 然后我通过编辑文件将所有的y个提交合并为一个 --> 接着我使用git reset --soft HEAD~y将HEAD重置到之前的状态。 --> 最后我使用git commit提交了所有内容。

现在我的GitHub显示我比原来多了一个提交,但是比之前少了y个提交(在GitHub Windows中)。

现在执行git pull命令会从主分支获取所有当前提交,并再次包含这个新合并的提交,因此最终我会有y+1个提交。请问如何推送我的最近合并的提交?

我对GitHub并不熟悉,如果有人能分享一下GitHub的基础架构也会很有帮助。我只找到了如何创建存储库等基本信息。

感谢您的时间。

1个回答

5
您使用 git rebase 命令将“y”个提交合并成一个。现在您已经将所有这些提交创建为一个提交。然后,您可以使用“git reset --soft HEAD~y”撤消先前的“y”个提交。此步骤会将您的提交和下一个“y-1”个提交从本地分支历史记录中删除,但保留补丁。随后您需要提交这些更改。
我假设您重新安排的第一个“y”个提交没有推送到 Github,而第二个“y”个提交已经推送了。因此,现在当您拉取时,Git 会看到您在本地存储库中创建了一个提交(大型合并提交)以及存在于 Github 中的“y”个提交,因为您重置并将它们合并为一个单独的提交。
重新安排后,无需重置分支,这可能导致问题。要解决问题,您需要执行以下操作:
git reset HEAD^
git stash -u
git pull
git stash pop

这个操作会撤销你的一个包含大量变更的提交。将其暂存以便从Github中获取你所缺少的变更。从Github拉取你落后的提交,然后重新应用我们暂存的变更。我相信你重复的变更将不再显示在差异中,如果现在提交变更,你会发现只领先1次提交,这是预期的结果。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接