使用git revert回退版本

我在这篇文章中介绍了如何使用git reset命令回退版本。

使用git reset回退版本_new9232的博客-CSDN博客_git 回退到最新版本

但是这种方法只适用于同一个分支只有一个人在修改代码。如果同一个分支有多人修改代码时,那这个命令就不适用了。为什么呢?我通过一个简单的例子说明下。

1、git reset弊端

tom和jack两个人现在拉取的是同一个分支的代码,提交记录是下面这样的。

然后tom新增了一个four.txt文件并推送到了远程仓库。jack同时拉取了远程仓库的代码,这时tom和jack的提交记录变成了这样

 

 然后呢,tom发现提交的代码有问题,于是进行了版本回退,并强制推送到了远程仓库。

这个时候就出问题了,由于jack本地仓库的代码比远程仓库代码新,所以jack此时拉取代码的话,是不能拉到tom回退后的代码的。

 

我们看到,虽然jack进行了拉取,但第四次提交记录依旧在 

而且如果jack有了新的修改进行了提交,tom回退的版本又会重新出现

 tom现在进行拉取

可以看到,tom回退的版本又出现了。

所以说,多人使用同一分支开发时,那么使用git reset命令进行版本回退就没用了。

2、git revert登场 

同样的,tom和jack拉取同一分支的代码,提交记录如下

然后tom新增了一个four.txt文件并推送到了远程仓库。jack同时拉取了远程仓库的代码,这时tom和jack的提交记录变成了这样

 接下来了,tom发现four.txt文件提交错了,于是进行了版本回退并强制推送到了远程仓库。

可以看到,回退到了 "第四个文件提交" 这个commit之前的状态了,four.txt文件已经没有了。

而且这个时候,jack再去拉取

 

可以看到,four.txt也已经不见了。

总结 

使用git reset回退版本时,可以看到你的提交记录就没了,而使用git revert回退版本时,提交记录依旧在,它其实相当于重新做了一个版本,但是和之前的版本一样。

我画了个示意图,应该能看明白这两个命令的区别了。

 

 

由此,如果同一分支只有你一个人在进行开发,并且回退记录不想保留的话,可以使用git reset进行版本回退。如果同一分支有多人开发时,或者你想保留回退记录的话,就使用git revert

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值