本Git系列內(nèi)容更多是基于廖雪峰老師的Git教程的個人筆記富岳、總結(jié)和擴展太颤,如有錯誤,請多多指正胸梆。
現(xiàn)在我們已經(jīng)學(xué)會了如何使用Git提交修改文件,我們可以繼續(xù)嘗試來修改1.txt中的內(nèi)容
hello git
hello world
hello windows
保存之后提交修改
$ git add 1.txt
$ git commit -m '1.txt_v3.0'
就這樣须板,我們就進行了一次提交文件修改的操作碰镜,在你之后使用Git的過程中,你可能會一次又一次的向Git提交你的新文件及文件修改习瑰,在每一次進行文件操作時绪颖,Git會自動生成一個又一個快照(commit),一旦文件操作混亂或誤刪文件,我們都可以通過commit
來將文件修改操作回到修改之前的那個版本甜奄,至此柠横,我們一共對1.txt進行了3次文件修改操作
//第一次
hello git
//第二次
hello git
hello world
//第三次
hello git
hello world
hello windows
在大型的文件修改提交中,我們不可能記住每一次修改的內(nèi)容课兄,Git此時就可以告訴我們文件操作的歷史記錄
$ git log
回車之后輸出
$ git log
commit d07e24d1e5166d259fec46b20a04714f69c00a6f (HEAD -> master)
Author: eivx <elvlxla@gmail.com>
Date: Wed Apr 11 13:49:24 2018 +0800
1.txt_v3.0
commit df293701520108dfcebf772e90902f60f46d57f6
Author: eivx <elvlxla@gmail.com>
Date: Wed Apr 11 13:38:56 2018 +0800
1.txt_v2.0
commit a545e4da55403ae64abde819534f4975cad98054
Author: eivx <elvlxla@gmail.com>
Date: Wed Apr 11 13:29:06 2018 +0800
1.txt_v1.0
git log
命令顯示從最近到最遠的文件操作日志牍氛,我們可以看到我們提交了3次文件的修改操作,最近一次是1.txt_v3.0
烟阐,其次是1.txt_v2.0
,最早是1.txt_v1.0
搬俊,如果想要 簡化日志內(nèi)容,我們可以在git log
后添加參數(shù)--pretty=oneline
$ git log --pretty=oneline
$ git log --pretty=oneline
d07e24d1e5166d259fec46b20a04714f69c00a6f (HEAD -> master) 1.txt_v3.0
df293701520108dfcebf772e90902f60f46d57f6 1.txt_v2.0
2e4995481e3bb5ddddd93e3143cce864d837a53f (origin/master) 4.txt_v1.0
每一行起始地方都有一大行字符蜒茄,這其實是版本號(commit id),很長的版本號保證了很多人一起提交文件時版本號不會沖突唉擂。
現(xiàn)在我們想回退到上一個版本1.txt_v2.0
,首先檀葛,Git想要執(zhí)行回退版本操作就必須知道當(dāng)前版本是哪個版本玩祟,在Git中,HEAD
表示當(dāng)前版本屿聋,也就是最新提交的1.txt_v3.0
卵凑,上一個版本就是HEAD^
,上上個版本就是HEAD^^
,如果回退版本比較多,我們也可以通過HEAD~100
來回退到100版本之前胜臊。
現(xiàn)在勺卢,回退到1.txt_v2.0
$ git reset --hard HEAD^
HEAD is now at d07e24d 1.txt_v2.0
現(xiàn)在我們打開1.txt,就可以看到內(nèi)容已經(jīng)回退到上一個版本
hello git
hello world
如果我們現(xiàn)在查看日志
$ git log
commit a545e4da55403ae64abde819534f4975cad98054
Author: eivx <elvlxla@gmail.com>
Date: Wed Apr 11 13:29:06 2018 +0800
1.txt_v2.0
commit 2e4995481e3bb5ddddd93e3143cce864d837a53f (origin/master)
Author: eivx <elvlxla@gmail.com>
Date: Tue Apr 10 21:42:05 2018 +0800
1.txt_v1.0
我們可以看到原先最新的那個版本1.txt_v3.0
不見了,如果后悔了想要恢復(fù)之前那個最新版本象对,就可以把Git bash窗口往上翻黑忱,找到之前執(zhí)行過的git log
命令顯示的1.txt_v3.0
版本號,我們就可以通過這個版本號回溯操作(版本號無需輸全,輸入前幾位Git就會自動幫我們補齊后面的版本號)
$ git reset --hard d07e24d
HEAD is now at d07e24d 1.txt_v3.0
現(xiàn)在可以打開1.txt文本看一下內(nèi)容
hello git
hello world
hello windows
現(xiàn)在文件已經(jīng)恢復(fù)到之前那個最新版本了
如果說,你的窗口關(guān)掉了甫煞,你找不到之前1.txt_v3.0
的版本號了菇曲,Git還為你提供了git reflog
命令,可以供你查看你的每一次命令
$ git reflog
我們可以在輸出內(nèi)容中找到關(guān)于1.txt_v3.0
的這一行
d07e24d (HEAD -> master) HEAD@{4}: commit: 1.txt_v3.0
我們現(xiàn)在找到了1.txt_v3.0
的版本號抚吠,于是就可以通過git reset --hard d07e24d
來恢復(fù)文件了