我已将我的分支与错误的分支合并并推送,后来我意识到这个错误并再次与正确的分支(master)合并。
你能否建议我现在如何解开那个错误的分支?
主
|
B(我合并的错误)
|
A(我的分支)
现在我需要取消合并这个B.
答案 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>
,您的分支就会像以前一样。
你可以简单地git revert
合并提交,如下所示:
git checkout BRANCH_NAME
git revert -m 1 <merge_commit_sha>
注意:您可能会遇到一些必须手动取消合并的冲突,就像正常合并时一样。