7

所以我们已经让一个 git 分支进入了一个棘手的状态:

两个分支:

* master
* other_branch

上周有人不小心将 other_branch (过早地)合并到 master 并推送到 origin。我们注意到了这个错误,我天真地承诺了

git revert bad_merge_commit

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

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

当然,在我的还原之上,master 上现在还有很多天的提交,所以解开这个看起来可能很困难。

有什么方法可以修复损坏吗?我是否可以提出一些变基论点并删除两个有问题的提交?

非常感谢!

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

other_branch 很久以前就从 master 分支出来了。我们的标准做法是在进行过程中将 master 反复合并到 other_branch 中,以最大程度地减少冲突的累积(有时我们会变基,但在这种情况下不会)。

主提交 A | 乙| C | BAD_MERGE [other_branch_@S] | REVERT_OF_BAD | D | E | F ... 头

other_branch 提交 P | 问 | 右 | S [BAD_MERGE_FROM_HERE] | T | 你 | V ... 头

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

查尔斯,我目前正在尝试使用您在此处建议的解决方案修复 master 的副本:如何在保留更改的同时从 Git 存储库中删除选定的提交日志条目?.

[/更新]

4

1 回答 1

4

是的,问题是还原撤消了合并引入的更改,但没有合并本身。我认为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

于 2011-03-24T09:17:18.403 回答