git revert 笔记

看了好多 git revert 的博客,没有一篇能看懂,实操的时候更是云里雾里。大致学懂后,我现在只能说,这是个命令根本无法代替版本回退,他和回退版本就是特么两个概念。

git revert 用来恢复一次或者多次提交,那么,恢复的定义是什么?实操之后发现,恢复就是把那次提交的东西全部丢弃。

这个看起来的确挺简单,但是在 Git 提交树中,实现起来非常鸡肋。

举个简单的例子,对一个文件夹进行 git 初始化,然后进行以下三次提交:

  1. 新增 a 文件,提交记作 add a
  2. 新增 b 文件,提交记作 add b
  3. 新增 c 文件,提交记作 add c

现在使用 git revert (add a 提交散列码) 此时会新增 revert "add a" 的新提交,同时删除了 a 文件。因为我们在 add a 提交中新增了 a 文件,恢复这次提交就是删除 a 文件。同理使用 git revert 恢复 add b 或者 add c 提交,也会删除对应的 b 或 c 文件。

这么一看好像很牛逼,但是,如果中间的提交存在对文件进行修改呢?比如以下提交:

  1. 新增 a 文件,提交记作 add a
  2. 修改 a 文件内容,提交记作 update a

现在使用 git revert (add a 提交散列码),就恢复错误,提示说 a 文件已经在 add a 提交后进行修改了,你要改你就把修改的提交也恢复了,不然就自己处理,可以忽略、取消本次恢复、或自行处理差异,你敢忽略吗?自行处理也离谱吧,没准处理完报 bug 还得回退。所以只能取消。然后 git revert (add a 提交散列码) (update a 提交散列码) 把这两次提交都进行回复,此时 a 文件就彻底没了。并且会进行两次提交 Revert "add a"Revert "update a"

上面这些操作,对于提交很频繁,写一行提交一次的人开发倒是挺好,有点类似于 Ctrl + z 嘛。但是我一次提交可能几百行代码,处理好多文件,一次恢复的成本太大,真用 revert 进行版本回退,真的鸡肋得不行,也不知道国内什么人把 revert 和版本回退放到一起。真要切到指定版本,git checkout 版本散列值 没学过?既可以保留当前开发,还可以切到指定版本进行开发,然后通过分支合并处理差异。

那么 revert 好处是什么?它的作用在于保存了撤销历史,对于微小提交的撤销,这是非常不错的,但是用来回退版本,就没意义了,两个版本差异几千甚至几万行代码,几十甚至数百文件,中间几十甚至几百次提交,用 git revert ?怕不是在痴人说梦。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值