如何取消Git合并?


79

我不小心git pull origin master从开发者那里做了一个,而master被合并为开发者。可以合并吗?

我已经看过不同的解决方案,我从开发人员和主人那里都尝试过这种方法:( git revert -m 1 <commit>每次一次)但是我得到了:每次都一切都是最新的

我想撤消dev中的合并主机:https ://github.com/iliassk/PED_MyTodo/commits/dev commit:e382550

Answers:


140

如果找到分支,则可以将分支重置为合并之前的状态。

一种方法是使用git reflog,它将列出您拥有的所有HEAD。我发现这git reflog --relative-date非常有用,因为它显示了每次更改发生多久了。

找到提交后,只需执行a git reset --hard <commit id>,分支便会像以前一样。

如果您有SourceTree,则可以在<commit id>那里查询git reflog太多。


由于这是一个奇怪的合并:“拉原点生成器:由“递归”策略进行的合并”,我有点迷失了。您是否建议我从master进行git reset --hard 757501b(即使历史记录没有变化)。还是从dev git reset --hard 14cbb9c?
redAce

您需要修复这个开发人员,对吗?因此,找到在此错误合并之前对dev所做的提交,然后对dev进行重置。
Andreas Wederbrand'3

2
git revert -m 1 <commit id>
mpoletto 17-10-11

1
最糟糕的是,如果您推送了合并提交,则不要应用此方法,因为那样会弄乱拉它的主分支。更喜欢还原。
coffman21 '19

1
您是救生员:)
Pe Dro

57

如果尚未提交合并,请使用:

git merge --abort


3
感谢它的工作,因为我尚未提交合并:)
Woppi

7
@Eightgate,他明确提到“如果您尚未提交合并,请使用:git merge --abort”
Abhishek

如果您尚未提交合并,这将起作用,欢呼。
daCoda

2

git revert -m允许取消合并,同时保留合并和撤消操作的历史记录。可能对记录很有帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.