Git 回滚Merge的代码(commit is a merge
2021-01-13 本文已影响0人
汗青fullstack
我们通过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 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
执行完毕就可以提交了。