使用Sourcetree在Git中取消分支

时间:2016-03-02 09:48:56

标签: git atlassian-sourcetree

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

你能否建议我现在如何解开那个错误的分支?

|

B(我合并的错误)

|

A(我的分支)

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

2 个答案:

答案 0 :(得分:4)

理想情况下,您可以从已发布的分支中获取不正确的合并提交,因为它不属于那里。但是,这样做会重写历史记录,这是不可取的,因为分支机构是公开的,而其他人可能已经将其撤消了。

相反,更安全的选择是使用Change number of copies to start..来撤消git revert合并提交引入的任何更改。

键入B并找到git log合并提交的<SHA-1>哈希值。假设合并提交的散列为B,您可以键入:

1a3mj4w1

这将在git revert 1a3mj4w1 之上添加 new 提交,这有效地撤消了合并提交A。现在你的历史将是这样的:

B

其中master \ B -- A -- C C引入的提交。现在,您可以简单地将分支机构推送到远程控制台。

答案 1 :(得分: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>

注意:您可能会遇到一些必须手动取消合并的冲突,就像正常合并时一样。