Git使用教程-5.版本回退

2021-09-17  本文已影响0人  Justin小贾同学

历史记录

  1. 现在,我们继续修改README.md文件的内容,然后提交到仓库。
23696@DESKTOP-GKRBCVI MINGW64 ~/Desktop/MyProject (master)
$ cat README.md
Hello Git!
Git is free software.
Git is a distributed version control system.

提交到仓库

23696@DESKTOP-GKRBCVI MINGW64 ~/Desktop/MyProject (master)
$ git add README.md

23696@DESKTOP-GKRBCVI MINGW64 ~/Desktop/MyProject (master)
$ git commit -m "distributed"
[master cf53e60] distributed
 1 file changed, 1 insertion(+)

这样,你不断对文件进行修改,然后不断提交修改到版本库里,就好比玩RPG游戏时,每通过一关就会自动把游戏状态存盘,如果某一关没过去,你还可以选择读取前一关的状态。有些时候,在打Boss之前,你会手动存盘,以便万一打Boss失败了,可以从最近的地方重新开始。Git也是一样,每当你觉得文件修改到一定程度的时候,就可以“保存一个快照”,这个快照在Git中被称为commit。一旦你把文件改乱了,或者误删了文件,还可以从最近的一个commit恢复,然后继续工作,而不是把几个月的工作成果全部丢失。版本回退 - 廖雪峰的官方网站 (liaoxuefeng.com)

  1. 实际工作中我们会提交很多次,那么我们怎么看到这些历史记录呢?在Git中,我们用git log命令查看:
23696@DESKTOP-GKRBCVI MINGW64 ~/Desktop/MyProject (master)
$ git log
commit cf53e60a3104d7f187c54759b0238c83c2522d48 (HEAD -> master)
Author: siebe <siebe@qq.com>
Date:   Thu Sep 16 11:32:12 2021 +0800

    distributed

commit 8249b3d01d2385cb2b201f2d57260b84d65eafde
Author: siebe <siebe@qq.com>
Date:   Thu Sep 16 11:30:36 2021 +0800

    add tow files

commit 5754150a2f4e88a2309dda8c73f0a42ef192ad7d
Author: siebe <siebe@qq.com>
Date:   Thu Sep 16 11:26:43 2021 +0800

    free software

commit 42d49c9aad91151f62a0391b5c3896e8162fea11
Author: siebe <siebe@qq.com>
Date:   Wed Sep 15 13:43:51 2021 +0800

    add a readme file

我们看到的一大串cf53e60a...就是commit id(版本号),每次提交都会产生一个版本号。

1.png

回滚快照

注:快照即提交(commit)的版本,每个版本我们称之为一个快照。

从前面的log中我们可以看到HEAD指向了最后一次commit,想要回滚就是把HEAD指向某个快照。首先,我们得知道要回到哪个一个快照的版本号。在Git中,用HEAD表示当前版本,上一个版本就是HEAD,上上一个版本就是HEAD,当然往上100个版本写100个比较容易数不过来,所以写成HEAD~100。
现在,我们想要回到上一个版本,就使用git reset命令

23696@DESKTOP-GKRBCVI MINGW64 ~/Desktop/MyProject (master)
$ git reset --hard HEAD^
HEAD is now at 8249b3d add tow files
3.png

Git不仅可以回到过去,而且还可以回到未来。现在我们的HEAD指向了add tow files版本,万一想要回到distributed该怎么办呢?

23696@DESKTOP-GKRBCVI MINGW64 ~/Desktop/MyProject (master)
$ git reset --hard cf53e60
HEAD is now at cf53e60 distributed
2.png

这里就有一个问题,要是我们不知未来版本的版本号怎么办呢?可以使用git reflog命令,看到每次reset的记录。

4.png
上一篇下一篇

猜你喜欢

热点阅读