怎么操作呢?首先想到的是上面所说的 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


点赞(1481)

评论列表共有 0 条评论

立即
投稿
返回
顶部