我的合并不好,然后是几个好的提交。我试图恢复不良的合并,但是我不想失去这些更改(即我不想进一步提交,这会消除更改(,我只是不希望它们在分支机构中。
所以我的日志看起来像这样:
7975c057 | Reverts bad merge
40a01d2f | Good commit
3b2c3825 | Good commit
1f3f1858 | Bad merge - code shouldnt be in this branch
37f71a89 | Good commit
... (more good commits...)
如何从分支中删除1f3f1858 | Bad merge
和7975c057 | Reverts bad merge
?
恢复合并提交是棘手的,因为合并有两个父母,只能遵循一个父母的道路。如果使用互动式重列,通常您必须完全重做合并。因此,我可能会建议以下策略:
git checkout -b good_branch 37f71a89 # create new branch from 37f71a89
git cherry-pick 3b2c3825 # cherry-pick first good commit
git cherry-pick 40a01d2f # cherry-pick second good commit
这将使您拥有所需的分支结构,尽管两个"良好"提交实际上将具有新的SHA-1哈希价值提交在功能上与其原始对应物相同(。