2016-03-02 277 views
2

我已将我的分支与错误的分支合并并推送,后来我意识到这个错误并再次与正确的分支(主)合并。取消合并分支在Git与Sourcetree

你可以请建议我现在如何解开错误的分支?

主人

|

B(错误的我合并了)

|

A(我的分支)

现在我需要取消合并这B.

回答

3

理想情况下,你可以用核武器炸不正确的合并,从已发布的分支提交,因为它不属于那里。但是,这样做会重写历史记录,这是不可取的,因为该分支是公开的,而其他人可能已经将其取消。

相反,更安全的选择是使用git revert撤消B合并提交引入的任何更改。

类型git log并找到B合并提交的<SHA-1>散列。假设合并提交有1a3mj4w1哈希键入:

git revert 1a3mj4w1 

这将添加一个新提交上的A有效地撤消合并提交B顶部。现在你的历史看起来就像这样:

master 
     \ 
     B -- A -- C 

其中C是承诺在git revert介绍。现在,您可以简单地将分支推送到远程,而不会出现任何问题。

0

解决方案1:

您可以将您的分支恢复到它是在之前的合并状态如果发现提交这是对呢。

使用git reflog,它会列出您拥有的所有HEAD。 我发现git reflog --relative-date非常有用,因为它显示了每次更改发生前多长时间。

一旦你发现提交只是做一个git reset --hard <commit id>和你的分支将像以前一样。


解决方案2:

你可以简单地git revert这次合并提交像这样:

git checkout BRANCH_NAME 
git revert -m 1 <merge_commit_sha> 

注:这可能是你最终会与一些冲突,你必须要手动取消合并,就像正常合并时一样。