我們通過git revert xxx 命令回滾某次merge過的commit,此時會報錯commit is a merge but no -m option was given.,這是因為當(dāng)前的merge commit其實包含了兩個子commit,也就是當(dāng)時合并的兩個commit,因此在執(zhí)行git revert 的時候會失敗,需要選擇回滾具體的兩個子commit中的一個才可以正?;貪L。
案例分析
1.分析log,確認(rèn)需要回滾的commit
我們通過git log xxx 可以看到當(dāng)前commit下的Merge: f2fe8c9 6103926,第二個id:6103926就是我要回滾的commitid前7位。

git log xxx

git log 6103926
2.git revert xxx -m 1
按照git revert xxx報錯的提示,應(yīng)該追加-m命令,以下是命令的注釋
-m, --mainline <parent-number>
select mainline parent
我們要回滾第二個id:6103926,則-m 1,表示保留以第1條為主線回滾第2條commit,如果回滾第一個則-m 2。
最終我們要回滾的命令:
git revert 76a2dac344e528799173c4eff843a7 -m 1
執(zhí)行完畢就可以提交了。