Git使用revert命令撤销合并

Tue Nov 10 13:03:12 CST 2015 2469 Java

文章摘要在团队协作开发中,一般需要使用一些版本管理工具,Git便是其中的佼佼者。在团队工作中,往往会有人员出现失误,将错误的代码合并到了仓库上,这时需要恢复到正常的版本状态。本文简单介绍下git revert命令来撤销一次合并,恢复到合并前的状态。

git revert命令用于撤销一次提交,同时会保留被撤销的commit和history信息。这是因为revert操作将会作为一次新的commit,将需要恢复的版本反向修改回去。

对于撤销一般的commit,git revert命令可以这样使用:

git revert HEAD               撤销前一次 commit

git revert HEAD^              撤销前前一次 commit

git revert [commitID] (比如:719de73a3d1c32a3c16929b7258ee533b0df7302)撤销指定的版本



但是当撤销一次merge时,git会提示错误:

error: Commit 390e5a00219ceac7fcb29a55a686c68536931c37 is a merge but no -m option was given.

fatal: revert failed.


这时就需要使用下面的命令来撤销merge合并了


撤销merge


git revert -m 1 [commitID]

-m后面的参数可选的值有两个:1和2,分别指执行revert merge操作之后,要恢复到的两条版本线。也就是说,如果你想恢复到第一条版本线就写1,你想恢复到第二条代码线就写2。

那么具体1和2代表哪条线呢?这个可以通过git log命令来查看这次merge的信息。可以看一看下面这条log信息,这是我做的一次测试:

commit 390e5a00219ceac7fcb29a55a686c68536931c37
Merge: 719de73 0c3ac55
Author: chenzuhuang <chenzuhuang@vip.qq.com>
Date:   Tue Nov 10 13:00:35 2015 +0800

......

可以看到Merge后面带有两个版本hash值(准确来说应该是commitID的前面7个字符),数字1表示的就是第一个hash值代表的版本线,数字2表示的就是第二个hash值代表的版本线。


commitID指的是你要撤销的merge的commitID


在上面这个测试例子中,若要恢复到719de73这次提交的版本,那么应该执行的命令为git revert -m 1 390e5a00219ceac7fcb29a55a686c68536931c37


官方文档:http://git-scm.com/blog/2010/03/02/undoing-merges.html


打赏
打赏

分享到: