Git合并,然后恢复,然后还原恢复

时间:2011-03-24 03:06:24

标签: git merge revert

所以我们把git分支变成了一个棘手的状态:

两个分支:

* master
* other_branch

上周有人意外地将other_branch(过早地)合并到了主人身上并推到了原点。我们注意到了这个错误,而我,在我的天真,承诺

git revert bad_merge_commit

来“解决”问题。一切都很好看,我们继续生活......

今天我们尝试将master合并到other_branch中,作为将other_branch引入master的一步。但我的回复似乎造成了噩梦。当master合并到other_branch时,other_branch上的所有(大多数?)工作都将被删除。我认为这是因为我的revert指示所有旧的提交都被还原。

当然,在我的恢复之上,现在有很多天值得提交,所以解开这看起来可能很困难。

有没有办法修复损坏?我可以使用一些rebasing参数并删除两个违规提交吗?

非常感谢!

[更新 - 根据要求添加当前状态的详细信息]

很久以前,

other_branch已经脱离了大师。我们的标准做法是将master重复地合并到other_branch中,以最大限度地减少冲突的累积(有时我们会反驳,但在这种情况下不会)。

  

master提交A | B | C | BAD_MERGE [other_branch_ @ S] | REVERT_OF_BAD | D | E | F ... HEAD

     

other_branch提交P |问| R | S [BAD_MERGE_FROM_HERE] | T | U | V ...... HEAD

尝试将主HEAD合并到other_branch HEAD会导致问题。

Charles,我目前正在尝试使用您在此处建议的解决方案修复主副本:How to remove selected commit log entries from a Git repository while keeping their changes?

[/更新]

1 个答案:

答案 0 :(得分:4)

是的,问题是revert会解除合并引入的更改,但不能自行合并。我认为https://www.kernel.org/pub/software/scm/git/docs/howto/revert-a-faulty-merge.html的补遗部分描述了一种可能的解决方案。

本文档也是Git的一部分,在Debian下,您可以在/usr/share/doc/git-doc/howto/revert-a-faulty-merge.txt

找到它