首页 > 解决方案 > 为什么 git 在还原推送到远程分支的合并提交时不提供默认值?

问题描述

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

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

标签: gitgit-revert

解决方案


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

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


推荐阅读