【git】revert

这是一个在主库使用的命令,可以保存历史,同时撤销提交。

git revert commit-id:这条命令的含义是,以一个“反向”补丁的形式,逆向执行commit-id的操作,最终新添加一个commit。

常见的是revert HEAD,即撤销上一次的提交。

那么,如果commit-id不是HEAD呢?比如v1,v2,v3是版本,revert的是v2,那么只会撤销v2里面的操作,后面依旧保留。下面验证:

aaaaa
2
3
4
5
hlhl

最开始是base版本:只有,

1
2
3
4
5
然后v1:
aaaaa
2
3
4
5

接着v2:

aaaaa
2
3
4
5
hlhl

此时执行:git revert HEAD^,后


内容变为了:

1
2
3
4
5
hlhl

说明确实只是撤销了v1里面的操作,v2仍然保存。


这是最一般的情况,如果是要revert一个merge以后的节点,这是因为这个节点的变动来自于两个分支,所以需要指出要revert来自哪一个分支的变动,此时就需要用-m参数。不过-m 不是指撤销哪一个变动,而是回到哪一个变动,也就是被-m指定的提交不变,会撤销另一个。一般的merge节点信息如下:


会在merge:后面显示被merge的版本,这是-m 1就是指回到第一个,-m 2 就是指回到第二个。

那么假设v1不变,此时分叉,master上提一个v2:

aaaaa
bb
3
4
5

同时v1衍生一个f1分支:

aaaaa
2
3
4
zzz

merge以后的log就如上图所示。

此时如果:git revert HEAD -m 1,那么可以看到1指的是51f7,也就是master分支,那么只会撤销newb的改动,也就是来自f1分支的改动,结果log一下:


可以看到,最终变为:

aaaaa
bb
3
4
5


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值