在有后续合并时还原 git 合并

Revert a git merge when there's been subsequent merges

我不小心将自己有多个提交的分支合并到一个发布分支。在我合并的几秒钟内,其他几个分支随后也被合并了。发布分支的 git 日志如下所示:

commit d942b01c89369e6be474f054a66d8cc1a0d7d59f
Merge: cd1db2c632a f2096c4685e
Author: someone else

commit 285d8d69a0abe17c2d6875aaee97003e206618f4
Merge: 4e5fae9a588 1665c1da9fd
Author: me
    updates

commit 1665c1da9fdec15a9325fa58dad25064a189f366
Author: me
    updates

commit 661aa3620ec444eabe7a251c6e9662185337fb4c
Merge: 66b06e87d85 2d58cc43674
Author: me
    updates

commit 66b06e87d85ec0c6702ad7fdee555f52bc47ca89
Author: me
    updates

commit f3162b881507609a2b7ded077f02c272e6ca7bb7
Author: me
    updates

commit 4e5fae9a58893e05f9853d24dd71f4e140f49165
Merge: 53f93040834 2d58cc43674
Author: someone else

所以我不能仅仅将 head 重置为 4e5fae9a58893e05f9853d24dd71f4e140f49165(我想我的理解是正确的)因为后来的合并。我只需要“撤消”我提交的合并

你可以git revert -m 1 285d8d69.

请注意,您之后将无法合并该分支中的任何提交,因为尽管合并的 效果 将被撤消,但 合并的 topology 将保留(此时您无能为力)。这是在 https://github.com/git/git/blob/master/Documentation/howto/revert-a-faulty-merge.txt 的著名解释中详细讨论的情况,它提供了解决方案,以防您稍后要执行合并。