IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Git版本回退之 reset 和 revert -> 正文阅读

[开发工具]Git版本回退之 reset 和 revert

在开发过程中,可能会遇到过错误提交的情况。这种情况下,先不要着急,可以通过以下两个命令来帮助你优雅的实现版本回退。

git reset

假如现在有如下几个提交:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0R1EYqND-1631173827022)(C:\Users\apple\AppData\Roaming\Typora\typora-user-images\image-20210909145924975.png)]

其中:A 和 B 是正常提交,而 C 和 D 是错误提交。现在想把 C 和 D 回退掉。而此时HEAD 指针指向 D 提交(5lk4er)。我们只需将 HEAD 指针移动到 B 提交(a0fvf8),即可。

这个时候就可以使用git reset 命令:

git reset --hard a0fvf8 // 将HEAD指针移动到B提交点
git push origin HEAD --force // 将提交强制推到远程仓库

此时HEAD指针就会移动到 B 提交下
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hktfQV8F-1631173788570)(C:\Users\apple\AppData\Roaming\Typora\typora-user-images\image-20210909151048438.png)]

采用这种方式回退代码会使 HEAD 指针往回移动,从而会失去之后的提交信息且不可恢复,所以要慎重使用。

git revert

git revert会创建一个新的版本,且HEAD指针会指向这个新生成的版本,原来错误提交信息也可以保留。

可以通过用git revert 命令逐个回退:

git revert 5lk4er
git revert 76sdeb

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BOY0KjKx-1631173788571)(C:\Users\apple\AppData\Roaming\Typora\typora-user-images\image-20210909151934936.png)]回退版本少的可以逐个回退,多的话就要批量回退了:

git revert OLDER_COMMIT^..NEWER_COMMIT

通过对比发现,git reset 会失去后面的提交,而 git revert 是通过反做的方式重新创建一个新的提交,而保留原有的提交。所以应尽量使用 git revert 命令来回退版本,慎重使用 git reset 命令。

补充

假如现在有三个提交,不巧的是那个错误的提交刚好位于中间
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dxlXu8o2-1631173788573)(C:\Users\apple\AppData\Roaming\Typora\typora-user-images\image-20210909153952226.png)]

此时直接使用 git reset 命令将 HEAD 指针重置到 A 提交显然是不行的,因为 C 提交是正确的,需要保留的。

正确的做法:先把 C 和 B 提交全部回退,再使用 cherry-pick 命令将 C 提交重新再生成一个新的提交 C’’,这样就实现了将 B提交回退的需求。

[外链图片转存中...(img-tJNkC0pb-1631173788574)]

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-09-11 00:01:48  更:2021-09-11 00:02:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 4:45:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码