所以我们把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?。
[/更新]
答案 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