当前位置: 首页 > news >正文

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 ?怕不是在痴人说梦。

相关文章:

  • Scala包,样例类,样例对象
  • No.020<软考>《(高项)备考大全》【第05章】项目范围管理
  • SQVI快速报表
  • LeetCode练习八:动态规划下:背包问题
  • 常见汇编命令英文缩写
  • 【蓝桥杯】K倍区间
  • 前端计算文件 hash
  • Spring Boot集成简易规则引擎 easy-rules
  • Prometheus 普罗米修斯
  • 【网络安全工程师】从零基础到进阶,看这一篇就够了
  • c++ 一些常识 2
  • [数据结构]直接插入排序、希尔排序
  • 一线大厂软件测试常见面试题1500问,背完直接拿捏面试官,
  • 【C语言】你真的了解结构体吗
  • Python自动化抖音自动刷视频
  • 提升Python代码性能的六个技巧
  • Mysql索引优化实战(分页、JOIN、Count)
  • 2023美赛C题【分析思路+代码】
  • 好不容易约来了一位程序员来面试,结果人家不做笔试题
  • 基于ESP32做低功耗墨水屏时钟