为什么 git 在还原推送到远程分支的合并提交时不提供默认值?

Why does git do not provide a default when reverting a merge commit that is pushed to the remote branch?

据我所知,在大多数情况下,我们会 git revert -m 1 <merge-hash>。 为什么他们在恢复合并提交时不默认为第一个父级? 背后有什么原因吗?

另外,在什么情况下我们必须使用-m 2

Git revert 通常对只有一个父项的提交进行操作。通过不提供默认父项,git 确保您知道您正在恢复与 2 个父项的提交并且已经考虑过这意味着什么。 (我只是在猜测为什么他们不默认为 -m 1。)

如果要还原对其他分支所做的更改,则需要使用 -m 2。例如,假设您将分支 feature 合并到分支 master 中。然后,如果你想恢复那个合并提交,你通常会用 -m 1 恢复主分支的 feature 分支 "out"。 (还原的最终结果是主分支上的先前提交。)相反,如果您执行了 -m 2,您将是 "reverting master out of the feature branch"。这很少有意义(因为最终状态将与 feature 分支的当前 HEAD 相同,但有一些额外的提交应用一些更改然后撤消它们)。 (还原的最终结果将是 feature 分支上的先前提交。)