在我的master分支中,我在本地执行了git merge some-other-branch,但从未将更改推送到原始master。我不是故意要合并的,所以我想撤销它。在合并后执行git status时,我收到以下消息:
# On branch master
# Your branch is ahead of 'origin/master' by 4 commits.基于一些instructions I found,我尝试运行
git revert HEAD -m 1但是现在我在git status上收到了这个消息
# On branch master
# Your branch is ahead of 'origin/master' by 5 commits.我不希望我的分支领先任何提交次数。我该如何回到这一点呢?
发布于 2010-03-06 03:34:01
使用git reflog检查哪个提交在合并之前(git reflog将比git log更好)。然后,您可以使用以下命令重置它:
git reset --hard commit_sha还有另一种方法:
git reset --hard HEAD~1它将使您返回1次提交。
请注意,任何已修改和未提交/未存储的文件都将重置为其未修改状态的。保留它们,或者隐藏更改,或者查看下面的--merge选项。
正如@Velmont在他的回答中所建议的,在这种直接的情况下,使用:
git reset --hard ORIG_HEAD可能会产生更好的结果,因为它应该保留您的更改。在合并发生之前,ORIG_HEAD将直接指向提交,因此您不必自己寻找它。
另一个技巧是使用--merge开关而不是--hard开关,因为它不会不必要地重置文件:
git reset --merge ORIG_HEAD--合并
重置索引并更新工作树中与HEAD不同的文件,但保留索引和工作树之间不同的文件(即具有未添加更改的文件)。
发布于 2011-03-18 02:06:07
假设您的本地主机不在原始主机/主机之前,您应该能够做到
git reset --hard origin/master然后,您的本地master分支看起来应该与origin/master相同。
发布于 2011-06-03 00:31:44
参见chapter 4 in the Git book和the original post by Linus Torvalds。
撤消已推送的合并
git revert -m 1 commit_hash如果要再次提交分支,请务必恢复恢复,就像Linus所说的那样。
https://stackoverflow.com/questions/2389361
复制相似问题