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

Git 撤回commit

上一篇,Git撤销add,其实已经讲了用reset命令可以取消commit,这里再啰嗦下。先看:

git如何撤回已经commit • Worktile社区

首先明确一点,无论是commit还是撤销commit,都是在本地暂存区操作,而不是远程仓库,要同步到远程仓库,需要push。

下面按照原文思路讲,再加一些自己的理解:

方法一:使用git reset命令

使用reset,前面已经讲过了,但是,如果之前commit之后又push了,而这次reset后,又push下,那么实现的功能其实是删除了远程仓库的上次push版本,即删除了最后的一个版本!见:

git删除某个版本_千锋教育 (mobiletrain.org)

此文中因为reset加了--hard,所以push要加 -f。

需要注意的是,这种删除版本的操作是不可逆的,即被删除的版本是找不回来的。版本号是会减少到删除的版本之前那一个。

方法二:使用git revert命令

这个命令同样可以实现版本删除功能,即撤销commit功能(本来本文是要讲这个功能哈),同样是只对本地暂存区操作,要同步远程需push下。但是,其实它并不是真的删除了那个版本,而是新增一个去掉那个版本的所有修改的版本,再提交,即,其实版本号是继续增加的。同时,它还有很多好处,直接上文吧:

Git进阶(二):git revert 用法-CSDN博客

对比reset,可以说是revert有三个优点吧,特别是第二点,非常神奇,revert之后的版本,在要合并包含被revert版本的版本(即是被revert版本之后到revert版本之前的这些版本)时,因为这些版本包含这个revert操作,会自动将被revert的版本剔除!个人认为,这是revert的最大优点!

方法三:使用git checkout命令

这就很低级了,就是直接新建一个版本,再提交。版本号继续增加,之前需要删除的版本也还是在,同样,这个版本及之后的版本,如果再和需要删除的版本之后到这个版本之前的版本合并,则还是会带有要删除的版本,也就是没有revert中第二个优点。


http://www.mrgr.cn/news/21112.html

相关文章:

  • 主流的3D模型格式有什么区别?
  • <数据集>二维码识别数据集<目标检测>
  • 罗盘时钟屏保你见过吗?非常有特色的电脑时钟屏保
  • docker原理以及使用
  • 利用KMeans重新计算自己数据集的anchor
  • C/C++的自由落体运动
  • 软件测试学习笔记丨Pytest的使用
  • Qt/C++开源项目 TCP客户端调试助手(源码分享+发布链接下载)
  • GIT:git add命令指定文件夹
  • Linux多线程——互斥锁的封装与生产消费模型的实现
  • MySQL你必须知道的事
  • (感知机-Perceptron)—有监督学习方法、非概率模型、判别模型、线性模型、参数化模型、批量学习、核方法
  • 解决安装mpi4py失败的问题
  • python恶搞无限弹窗脚本
  • QT核心内容(9.6)
  • 【2024高教社杯全国大学生数学建模竞赛】B题完整解析(含论文、代码分享)
  • 代码随想录算法训练营第38天 | LeetCode322.零钱兑换、LeetCode279.完全平方数、LeetCode139.单词拆分、56. 携带矿石资源
  • Android12 MTK 二级菜单拖拽图标到主屏时出现图标重复
  • s let 和const的区别 ,它们可以变量提升吗
  • python转换并提取pdf文件中的图片