我已将我的分支与错误的分支合并并推送,后来我意识到这个错误并再次与正确的分支(主)合并。取消合并分支在Git与Sourcetree
你可以请建议我现在如何解开错误的分支?
主人
|
B(错误的我合并了)
|
A(我的分支)
现在我需要取消合并这B.
我已将我的分支与错误的分支合并并推送,后来我意识到这个错误并再次与正确的分支(主)合并。取消合并分支在Git与Sourcetree
你可以请建议我现在如何解开错误的分支?
主人
|
B(错误的我合并了)
|
A(我的分支)
现在我需要取消合并这B.
理想情况下,你可以用核武器炸不正确的合并,从已发布的分支提交,因为它不属于那里。但是,这样做会重写历史记录,这是不可取的,因为该分支是公开的,而其他人可能已经将其取消。
相反,更安全的选择是使用git revert
撤消B
合并提交引入的任何更改。
类型git log
并找到B
合并提交的<SHA-1>
散列。假设合并提交有1a3mj4w1
哈希键入:
git revert 1a3mj4w1
这将添加一个新提交上的A
有效地撤消合并提交B
顶部。现在你的历史看起来就像这样:
master
\
B -- A -- C
其中C
是承诺在git revert
介绍。现在,您可以简单地将分支推送到远程,而不会出现任何问题。
解决方案1:
您可以将您的分支恢复到它是在之前的合并状态如果发现提交这是对呢。
使用git reflog
,它会列出您拥有的所有HEAD。 我发现git reflog --relative-date
非常有用,因为它显示了每次更改发生前多长时间。
一旦你发现提交只是做一个git reset --hard <commit id>
和你的分支将像以前一样。
你可以简单地git revert
这次合并提交像这样:
git checkout BRANCH_NAME
git revert -m 1 <merge_commit_sha>
注:这可能是你最终会与一些冲突,你必须要手动取消合并,就像正常合并时一样。