我們通過(guò)git revert xxx
命令回滾某次merge過(guò)的commit信轿,此時(shí)會(huì)報(bào)錯(cuò)commit is a merge but no -m option was given.
晃痴,這是因?yàn)楫?dāng)前的merge commit其實(shí)包含了兩個(gè)子commit残吩,也就是當(dāng)時(shí)合并的兩個(gè)commit,因此在執(zhí)行git revert
的時(shí)候會(huì)失敗愧旦,需要選擇回滾具體的兩個(gè)子commit中的一個(gè)才可以正呈榔剩回滾。
案例分析
1.分析log笤虫,確認(rèn)需要回滾的commit
我們通過(guò)git log xxx
可以看到當(dāng)前commit下的Merge: f2fe8c9 6103926
旁瘫,第二個(gè)id:6103926
就是我要回滾的commitid前7位。
2.git revert xxx -m 1
按照git revert xxx
報(bào)錯(cuò)的提示琼蚯,應(yīng)該追加-m
命令,以下是命令的注釋
-m, --mainline <parent-number>
select mainline parent
我們要回滾第二個(gè)id:6103926
酬凳,則-m 1
,表示保留以第1條為主線回滾第2條commit遭庶,如果回滾第一個(gè)則-m 2
宁仔。
最終我們要回滾的命令:
git revert 76a2dac344e528799173c4eff843a7 -m 1
執(zhí)行完畢就可以提交了。