你不知道的git如何撤销回退版本

发布时间:2024年01月23日

简言之:从1 回退到 3,在3版本通过回退记录(git reflog)找到它的上一条回退记录的hash值,复制1的hash值进行回退,执行git reset --hard 粘贴1的hash值进来,此时就回到1的版本了,执行git log即可看到1、2、3、4、5所有提交记录。

举例说明:我总共有1、2、3、4、5,5条提交版本记录,我现在已经回退到3了,可是这个版本我不满意,我要回退到1、2,也就是最近的一次提交;但是自从回退到3版本,我用git log找不到3之前的1、2的提交版本号(每个版本的一长串hash值),那如何才能找回它们的版本号呢?那就是用git reflog查看回退记录,git的撤销回退版本规则是这样的:在git reflog中找到上一条回退记录的,也就是你从哪回退来的这个hash值,复制这个hash值,使用 git reset --hard 粘贴到这里,就可以回到你 回退前的版本,也就是1最近的一次提交,再执行git log就可查到1、2、3、4、5所有提交记录。

实战演示

需求:回退到首次提交所有代码版本,再从此版本回退到第四次提交,也就是最近的一次提交。

1、这是我的提交记录

在这里插入图片描述

2、回退

git reset --hard  d4cbaafd76e7ddd0435d761566d1530426a636c8
或  git reset --hard  d4cbaaf // 取上面的前7位

当前回退的版本为d4cbaaf

在这里插入图片描述

3、此时用git log已经找不到之前的提交记录了,也就是 修复文档第四次提交的记录

在这里插入图片描述

4、虽然git log没有日志,但是git reflog 记载着每一次版本移动的记录以及对应版本的版本号

执行 git reflog
在这里插入图片描述
提示:git的回退是靠hash值的,所以只要有这个值,那一切都好办了。

5、正式从 回退版本撤销到最近提交的版本,即 首次提交所有代码 回到 第四次提交。换成数字举例就是 从3回到1

当前版本已成功回退到 第四次提交了,拿下。

git reset --hard f9ae7aa

在这里插入图片描述

6、撤销回退之后如果要提交这个版本更新到远端仓库,就执行git push -f,强制推送上去。

git push -f 

命令说明:回退版本后使用git push -f强制推送是为了覆盖远程仓库的当前版本。
其实撤销回退准确来讲还是叫回退,只是为了方便大家理解,更加语义化、直观的表达方式。

7、此时已经能看到当前版本之前的提交记录了,因为当前已经是 第四次提交的版本了,不再像 首次提交所有代码一样。

git log查看
在这里插入图片描述

git log 和 git reflog的区别

git log:只能看到当前版本以及它之前的记录,但是看不到它后来的版本。2看不到最新的1,但能看到2、3、4、5老的。如果当前是1,那就能看到1、2、3、4、5。

git reflog:查看每次版本移动的轨迹,回退时专用。
这个查看回退记录功能我就知道git设计者肯定不会随便的将部分版本删除掉了,肯定是需要用一些办法才能让不见天日的版本起死回生。

拓展:命令行如何复制hash值

鼠标选中复制的内容右键 => 选Paste (复制) => Copy (粘贴)

后言

今天在用git处理仓库的东西,突然就钻研了一下,把之前懂得不是很全的知识点补充了一下。至少我个人觉得这篇挺精髓的,这个撤销回退版本操作,不需要自己去备份老版本就可以自由回退不同版本,游刃有余。记录一下,方便以后遇到或者正在遇到找这个方案的小伙伴,就这样。😊

文章来源:https://blog.csdn.net/Steven_Son/article/details/135777930
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。