据我所知,在大多数情况下,我们会进行git revert -m 1 <merge-hash>
。
为什么在还原合并提交时它们不默认为第一父级?
有什么原因吗?
此外,在什么情况下我们必须使用-m 2
?
答案 0 :(得分:1)
Git还原通常仅对单亲执行。通过不提供默认的父级,git可以确保您知道您正在还原2个父级的提交,并且已经考虑了这意味着什么。 (我只是在猜测为什么它们没有默认为-m 1
。)
如果要还原对另一个分支所做的更改,则需要使用-m 2
。例如,假设您将分支feature
合并到分支master
中。然后,如果您想还原该合并提交,通常可以使用feature
还原master分支中的-m 1
分支。 (还原的最终结果是在master分支上的上一次提交。)相反,如果您执行了-m 2
,则将“将master退出功能分支”。这很少有道理(因为结束状态将与您的HEAD
分支的当前feature
相同,但是需要进行一些额外的提交才能应用某些更改,然后撤消它们)。 (还原的最终结果将是 feature 分支上的上一次提交。)