怎么操作呢?首先想到的是上面所说的 git revert <commit>
,但是貌似不太行。
git revert 384fdf1703ba2dacd59f7e30b8f1dabc715b018a error: Commit faulty merge is a merge but no -m option was given. fatal: revert failed
这是因为试图撤销两个分支的合并的时候Git不知道要保留哪一个分支上的修改。所以我们需要告诉git我们保留那个分支m
或者mainline
.
git revert -m 1 384fdf1703ba2dacd59f7e30b8f1dabc715b018a
-m
后面带的参数值 可以是1或者2,对应着parent的顺序.上面列子:1代表v3
,2代表d2
所以该操作会保留master分支的修改,而撤销dev分支合并过来的修改。
此处rev3
是一个常规commit,其内容包含了之前在faulty merge
撤销掉的dev合并过来的commit的【反操作】的合集。
到这个时候还没完,我们要记住,因为我们抛弃过之前dev合并过来的commit,下次dev再往master合并,之前抛弃过的其实是不包含在里面的。那怎么办呢?
恢复之前的回滚
很简单我们把之前master那个带有【反操作】的commit给撤销掉不就好了?
git checkout master git merge dev
发表评论 取消回复