歷史記錄
- 現(xiàn)在,我們繼續(xù)修改
README.md文件的內(nèi)容,然后提交到倉庫。
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游戲時,每通過一關就會自動把游戲狀態(tài)存盤,如果某一關沒過去,你還可以選擇讀取前一關的狀態(tài)。有些時候,在打Boss之前,你會手動存盤,以便萬一打Boss失敗了,可以從最近的地方重新開始。Git也是一樣,每當你覺得文件修改到一定程度的時候,就可以“保存一個快照”,這個快照在Git中被稱為commit。一旦你把文件改亂了,或者誤刪了文件,還可以從最近的一個commit恢復,然后繼續(xù)工作,而不是把幾個月的工作成果全部丟失。版本回退 - 廖雪峰的官方網(wǎng)站 (liaoxuefeng.com)
- 實際工作中我們會提交很多次,那么我們怎么看到這些歷史記錄呢?在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(版本號),每次提交都會產(chǎn)生一個版本號。

1.png
回滾快照
注:快照即提交(commit)的版本,每個版本我們稱之為一個快照。
從前面的log中我們可以看到HEAD指向了最后一次commit,想要回滾就是把HEAD指向某個快照。首先,我們得知道要回到哪個一個快照的版本號。在Git中,用HEAD表示當前版本,上一個版本就是HEAD,上上一個版本就是HEAD,當然往上100個版本寫100個比較容易數(shù)不過來,所以寫成HEAD~100。
現(xiàn)在,我們想要回到上一個版本,就使用git reset命令
23696@DESKTOP-GKRBCVI MINGW64 ~/Desktop/MyProject (master)
$ git reset --hard HEAD^
HEAD is now at 8249b3d add tow files

3.png
Git不僅可以回到過去,而且還可以回到未來?,F(xiàn)在我們的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