合并master到私有分支后,如何移除远程错误提交及解决Git revert报错?
解决Git合并提交Revert时的父编号选择问题
当你把master合并到私有分支后产生的提交属于合并提交,这类提交有两个父节点:一个是私有分支合并前的最后一次提交,另一个是master分支被合并时的最后一次提交。Git无法自动判断你要撤销哪条分支的合并操作,所以必须用-m参数指定父编号。
如何确定父编号
执行git show <合并提交的SHA>,输出内容里会有两行类似这样的内容:
parent <私有分支合并前的提交SHA> parent <master分支被合并时的提交SHA>
这里的顺序是核心:
- 第一个
parent(对应编号1)是你执行合并操作时所在的分支,也就是你的私有分支 - 第二个
parent(对应编号2)是被合并进来的分支,也就是master
选择哪个父编号
如果你想撤销这次合并,让代码回到合并前私有分支的状态(完全移除master合并带来的修改),就选编号1,执行命令:
git revert -m 1 <合并提交SHA>
这个命令会生成一个新的提交,将合并引入的修改全部撤销。之后把这个新提交push到远程仓库,就能移除那次错误合并的影响。
注意事项
如果之后你还需要再次合并master到私有分支,记得先把这次的revert提交再revert一次,否则Git会默认保留"撤销合并"的状态,导致master的修改无法正常合并进来。
内容的提问来源于stack exchange,提问作者CodeWreck
相关产品推荐
相关产品推荐

