Git撤销合并提交时提示缺少-m选项的问题求助
解决Git撤销合并提交时的
-m选项报错问题 嘿,这个问题我太熟悉了!你遇到的报错是因为你尝试撤销的是一个合并提交,这类提交有多个父节点,Git需要你明确指定撤销后要保留哪一条分支的历史,所以必须加上-m参数来指定父编号。
为什么会报错?
看你的git log输出,目标提交1c3268d4b69dc6ca9dd89e92b513f5edb194978c是一个合并提交:
commit 1c3268d4b69dc6ca9dd89e92b513f5edb194978c Merge: 5d6fdd4 7531be0 Author: jaskarans <jask@sl.com> Date: Fri Mar 16 10:23:58 2018 +0530 Merge branch 'development' of https:// abc.com:8888/development/asdf into jQuery_update
这里的Merge: 5d6fdd4 7531be0表示这个合并提交有两个父节点:
5d6fdd4:是你本地分支jQuery_update在合并前的最后一个提交(也就是你自己的分支历史)7531be0:是被合并的远程development分支的最后一个提交
Git不知道你撤销合并后想要保留哪一边的内容,所以必须用-m参数指定父编号(1对应第一个父节点,2对应第二个)。
正确的撤销步骤
确定要保留的分支历史:
- 如果你想撤销合并,回到合并前的状态(保留你本地
jQuery_update分支的内容,丢弃从development分支合并过来的变更),用-m 1 - 如果你想保留
development分支的内容,撤销你本地分支的变更,用-m 2(这个场景很少见,一般都是选-m 1)
- 如果你想撤销合并,回到合并前的状态(保留你本地
执行撤销命令:
去掉不必要的sudo(Git操作一般不需要管理员权限,除非仓库目录权限异常),执行:git revert -m 1 1c3268d4b69dc6ca9dd89e92b513f5edb194978c执行后会打开编辑器让你填写撤销提交的说明,保存退出即可生成一个新的撤销提交。
推送撤销结果到远程:
最后把这个新的撤销提交推送到远程仓库:git push
额外提示
如果你不确定父节点对应的分支内容,可以用以下命令查看合并提交的详细信息:
git show 1c3268d4b69dc6ca9dd89e92b513f5edb194978c
输出里会清晰显示两个父提交对应的分支信息,帮你确认选哪个-m参数。
内容的提问来源于stack exchange,提问作者Sandeep
相关产品推荐
相关产品推荐

