【Git】03 撤銷 & 版本回退
阿新 • • 發佈:2020-08-14
回退分為三種情況,每種情況對應了我們檔案的儲存區域
工作區 | 暫存區 | 版本區(當前分支)
1、檔案可能存放在工作區,沒有被Git追蹤【紅色標記狀態】
2、檔案可能已經新增到暫存區,沒有被Git提交到版本分支中【綠色狀態】
3、檔案可能已經在版本分支中
1、在工作區的撤銷
首先檢視Git當前狀態:
對我們工作區的檔案進行內容更改:
vim text.txt A new content insert this file...
再次檢視,很顯然的,更改後的檔案,Git就會標記為未追蹤的檔案
如果要撤銷回到最初的樣子【這是撤銷命令】
git checkout 檔名稱
可以檢視檔案的狀態:
之前新增的內容已經沒有了,Git倉庫狀態顯示未沒有需要提交的,工作樹幹淨
2、在暫存區中的撤銷
現在重新新增內容,並且提交到暫存區中:
檔案新增進暫存區:
對暫存區的檔案撤銷,即把檔案從暫存區拉回到工作區:
git reset HEAD -- 檔名稱
如果撤銷所有暫存區的檔案,可以:
git reset HEAD -- .
或者直接刪除暫存區中的檔案:
git rm --cached 檔名稱
3、在版本分支中的版本回退:
首先把text.txt檔案進行提交,每一次提交代表了一個版本儲存在版本分支中:
每一個版本都具有獨一無二的版本序列號,例如下圖的黃色字串
SVN是一個伺服器集中式的版本控制系統,所有的版本控制統一在SVN中執行
但是Git是一個分散式的版本控制系統,每一個人都有獨立的本地倉庫
版本不會統一在SVN中,每一個開發者的倉庫中的版本號就有可能會一樣,這樣把版本提交到統一的倉庫中就會發生問題
版本衝突,所以為了解決這個問題,Git使用了這種奇特的序列號作為版本號,以防止版本衝突
例如現在最新的版本是第三次提交,而我們希望回退到第二版本或者更早的。。。
首先是回退到上一個版本
這裡一共三個版本,最新版本就是第三次提交
執行這個命令以後可以看到,當前的版本到了第二次提交了
git reset --hard HEAD^
如果要回退臨近的幾個版本,^表示上一個版本,多個^就表示之前的第n個
git reset --hard HEAD^^^^ ...
指令的意思就很明確了,從頭開始回退到第N個版本
但是如果我們希望回退到指定的版本,可以宣告版本號來回退:
git reset --hard 版本號