我不小心在本地主分支上运行了gitmergesome_other_branch。我还没有将更改推送给origin master。如何撤消合并?
合并后,git状态显示:
# On branch master
# Your branch is ahead of 'origin/master' by 5 commits.
我如何撤销所有这些提交?
我不小心在本地主分支上运行了gitmergesome_other_branch。我还没有将更改推送给origin master。如何撤消合并?
合并后,git状态显示:
# On branch master
# Your branch is ahead of 'origin/master' by 5 commits.
我如何撤销所有这些提交?
当前回答
如果您想要一个命令行解决方案,我建议您只使用MBO的答案。
如果您是新手,您可能会喜欢图形化方法:
启动gitk(从命令行,或在文件浏览器中单击鼠标右键(如果有))您可以很容易地在那里发现合并提交-从顶部开始的第一个节点有两个父节点按照第一个/左侧父级的链接(合并前当前分支上的父级,通常为红色)在所选提交上,右键单击“将分支重置到此处”,选择此处的硬重置
其他回答
如果你还没有提交,你只能使用
$ git checkout -f
它将撤消合并(以及您所做的一切)。
假设您的本地主机不领先于源/主机,您应该能够
git reset --hard origin/<branch-name>
因此,假设您在master上执行了此操作,那么您的本地master分支看起来应该与origin/master相同。
您可以使用git reflog查找上一次结账。有时候,这是一个你想回到的好状态。
具体而言,
$ git reflog
$ git reset --hard HEAD@{0}
暂存gitbranch-d the_local_branchgit checkout-t<远程名称>应用git存储
这对我有用。。!!
如果您的合并和相应的提交尚未被推送,您可以始终切换到另一个分支,删除原始分支并重新创建它。
例如,我意外地将一个开发分支合并到master中,并想撤消它。使用以下步骤:
git checkout develop
git branch -D master
git branch -t master origin/master
瞧!Master与原点处于同一阶段,您的错误合并状态将被清除。