上次我們說(shuō)到查看歷史版本酱床,今天我們來(lái)說(shuō)說(shuō)新的知識(shí)怔毛。
修改當(dāng)前版本
命令:
我們可以通過(guò)
git reset --hard[索引值]
將版本回滾到指定的版本俺夕。
參數(shù)
hard:會(huì)將本地庫(kù),暫存區(qū)和本地區(qū)的文件改變到指定的版本薄货。
soft:只會(huì)將本地庫(kù)進(jìn)行修改。相當(dāng)于git commit的上一個(gè)狀態(tài)碍论。
mix:會(huì)將本地庫(kù)和暫存進(jìn)行修改谅猾,想到于本地區(qū)寫(xiě)的代碼才add到了暫存區(qū)。
(可能理解有誤鳍悠,霧税娜,實(shí)踐實(shí)踐看看)
測(cè)試前狀態(tài)
這個(gè)是昨天的文章執(zhí)行了之后的樣子。
jianshu.txt內(nèi)容
創(chuàng)建新版本
在這里為了直觀表現(xiàn)藏研,我直接多創(chuàng)建了幾個(gè)版本巧涧。
這個(gè)時(shí)候jianshu.txt的內(nèi)容
只是回滾本地庫(kù)
命令
git reset --soft 90df6eb
理論現(xiàn)象:
在本地庫(kù)里面應(yīng)該是head指向最開(kāi)始的add test.txt的版本。但是由于使用的是soft參數(shù)的原因遥倦,本地區(qū)的文件應(yīng)該是沒(méi)有變化的谤绳。
測(cè)試截圖:
由圖中,我們可以看出只有本地庫(kù)的版本進(jìn)行了變化袒哥。但是后面版本新創(chuàng)建的jianshu.txt文件并沒(méi)有因?yàn)榘姹镜幕貪L小時(shí)缩筛。
回滾到暫存區(qū)
調(diào)整版本到最新。
在輸入代碼的時(shí)候一不小心輸錯(cuò)了代碼導(dǎo)致版本貌似出現(xiàn)了一些奇怪的東西堡称,這些東西目前并不重要瞎抛。我們只需要注意我們的版本回歸到了最新即可。
這是暫存區(qū)的狀態(tài)
命令
git reset --mix b329f1a
現(xiàn)象:
版本變化:
暫存區(qū)變化
本地區(qū)沒(méi)有變化:
結(jié)果:
根據(jù)三個(gè)區(qū)的變化却紧,我們可以看出桐臊。本地區(qū)并沒(méi)有因?yàn)槊罨貪L胎撤,還是在最新的版本。
全部回滾
命令
git reset --hard
截圖:
本地庫(kù)回滾:
暫存區(qū)變化:這是因?yàn)樵谶@個(gè)版本沒(méi)有創(chuàng)建新文件断凶。
代碼區(qū)變化:
可以發(fā)現(xiàn)本地區(qū)的文件回歸到了最初的樣子伤提。
刪除文件恢復(fù)
根據(jù)上面的現(xiàn)象,我就可以利用本地庫(kù)的特點(diǎn)恢復(fù)我們?cè)?jīng)刪除過(guò)的代碼认烁。
恢復(fù)前提:
刪除的文件一定要提交到本地庫(kù)肿男。
操作:
如果刪除的文件已經(jīng)提交到了新的版本。那么只需要回滾到之前一個(gè)版本就可以了却嗡。
可以使用
git reset --hard^
^
這個(gè)表示上個(gè)版本舶沛,^^
表示上上個(gè)版本遞增。使用(~
+數(shù)字)可以回滾上幾個(gè)版本窗价,由數(shù)字控制回滾的版本如庭。