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

时间:2019-01-16 02:43:54

标签: git git-revert

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

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

1 个答案:

答案 0 :(得分:1)

Git还原通常仅对单亲执行。通过不提供默认的父级,git可以确保您知道您正在还原2个父级的提交,并且已经考虑了这意味着什么。 (我只是在猜测为什么它们没有默认为-m 1。)

如果要还原对另一个分支所做的更改,则需要使用-m 2。例如,假设您将分支feature合并到分支master中。然后,如果您想还原该合并提交,通常可以使用feature还原master分支中的-m 1分支。 (还原的最终结果是在master分支上的上一次提交。)相反,如果您执行了-m 2,则将“将master退出功能分支”。这很少有道理(因为结束状态将与您的HEAD分支的当前feature相同,但是需要进行一些额外的提交才能应用某些更改,然后撤消它们)。 (还原的最终结果将是 feature 分支上的上一次提交。)