Git版本控制--05--可以吃后悔药之版本回退

当我们提交了很修改的文件后,第二天一早突然觉得,昨天的文件其实不用修改,这时候怎么办呢?

git给我们提供了吃后悔药的机会。

首先:我们可以通过git log命令查看,我们的提交记录。

$ git log
commit 51b73ae20c9be52a9c1893b52cb58d9f45ed3106 (HEAD -> master)
Author: YiboChen <17630508316@163.com>
Date:   Sun Aug 9 00:44:23 2020 +0800

    在learngit文件中添加了几个字

commit 3089e7c13d1d6c1b67931531eb7bc4a5bf1af6ad
Author: YiboChen <17630508316@163.com>
Date:   Sun Aug 9 00:28:51 2020 +0800

    再次提交

commit f2aa600de1237c5943e3d402383d58b7fc136590
Author: YiboChen <17630508316@163.com>
Date:   Sun Aug 9 00:26:36 2020 +0800

    提交另一个learngit文件

从上面的记录可以看出,我们总共提交了三次。这些提交记录,就像时间轴一样被连成了一条线。

 倘若我们想要回到某个“时刻”(版本)的状态。该怎么做呢?

使用git reset --hard 版本号 命令 即可回退到某个版本(从下面可以看出 当前的版本已经回到了 "再次提交"的时候了)

$ git reset --hard 3089e7c13d1d6c1b67931531eb7bc4a5bf1af6ad
HEAD is now at 3089e7c 再次提交

此时我们可以通过gitk调出可视化命令 来查看一下版本提交提示。

 可以看出 提交日志就剩下两条了。也就是我们现在存在的就剩两条版本了。

这时有一种情况要考虑:你从2020年做时光机来到了1999年,结果你发现你回不去了,怎么办?

第一种情况:我们还没有关闭git bash命令窗口 还能够往上翻看到 最新的版本是什么,然后通过git reset --hard 版本号 的方式回到最新的版本。

$ git reset --hard 51b73ae20c9be52a9c1893b52cb58d9f45ed3106
HEAD is now at 51b73ae 在learngit文件中添加了几个字

使用gitk看一下现在的历史时间轴

 可以看到,又恢复到了之前的三个。

第二种情况:我们已经关掉了git bash命令窗口 而且我们是第二天才想起来,之前的版本回退是自己草率了,自己想回到最新的版本,那么这时,git提供了一个git reflog命令,可以解决我们的问题。

$ git reflog
51b73ae (HEAD -> master) HEAD@{0}: reset: moving to 51b73ae20c9be52a9c1893b52cb58d9f45ed3106
3089e7c HEAD@{1}: reset: moving to 3089e7c13d1d6c1b67931531eb7bc4a5bf1af6ad
51b73ae (HEAD -> master) HEAD@{2}: commit: 在learngit文件中添加了几个字
3089e7c HEAD@{3}: commit: 再次提交
f2aa600 HEAD@{4}: commit (initial): 提交另一个learngit文件

从倒数第三行记录可以看出,最新版本的版本号是 "51b73ae",我们就仍可以通过使用git reset --hard xx命令回到最新版本了。

原文地址:https://www.cnblogs.com/bigbosscyb/p/13461312.html