Git 回滚Merge的代码(commit is a merge but no -m option was given.)

我们通过git revert xxx 命令回滚某次merge过的commit,此时会报错commit is a merge but no -m option was given.,这是因为当前的merge commit其实包含了两个子commit,也就是当时合并的两个commit,因此在执行git revert 的时候会失败,需要选择回滚具体的两个子commit中的一个才可以正常回滚。

案例分析

1.分析log,确认需要回滚的commit

我们通过git log xxx 可以看到当前commit下的Merge: f2fe8c9 6103926,第二个id:6103926就是我要回滚的commitid前7位。

git log xxx

git log 6103926

2.git revert xxx -m 1

按照git revert xxx报错的提示,应该追加-m命令,以下是命令的注释

-m, --mainline <parent-number>
                        select mainline parent

我们要回滚第二个id:6103926,则-m 1,表示保留以第1条为主线回滚第2条commit,如果回滚第一个则-m 2
最终我们要回滚的命令:

 git revert 76a2dac344e528799173c4eff843a7 -m 1

执行完毕就可以提交了。


补充说明(发现一个解释的更清楚的文章)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容