SourceTree使用教程(六)--回滾版本到某次提交
在SourceTree使用教程(五)中講到了提交的撤銷回滾,並且註明這個撤銷回滾只能撤銷回滾最新的提交記錄,並不能回滾到某個歷史版本。但是實際使用場景中肯定會遇到需要回退到某個提交的,而不僅僅是最新的提交。本次教程將講述如何使用SourceTree來回退程式碼到某次提交。
方法/步驟
-
1
開啟sourceTree,切換到開發分支
-
2
開啟本地工作副本test1.txt檔案,編輯新增 add test1
-
3
提交併推送本次新增到遠端倉庫
-
4
開啟本地工作副本test1.txt檔案,編輯新增 add test2
-
5
提交併推送本次修改到遠端倉庫,可以看到最新的歷史記錄在本地倉庫和遠端倉庫都已有了新增test1和新增test2
-
6
如果這個時候突然發現前面的兩次提交是錯誤的,現在想回到“提取release分支的某次提交到develop分支”這個版本。有兩種解決方式,第一種是刪除掉新增test1和新增test2兩次提交所加的內容,但是這有個前提,是修改內容很少的情況下才可以採用此方法,否則會陷入無窮無盡的程式碼比對泥沼。那麼第二種方式就是該教程將要講述的。回退到某個歷史版本。
-
切換到sourceTree介面,開啟develop分支的日誌/歷史,滑鼠選中將要回退到的那個歷史提交記錄
-
右鍵-》重置當前分支到此次提交
-
在彈窗中 使用模式選擇 強行合併--丟棄所有改動過的工作副本,點選確定
-
等待重置完,可以看到本地倉庫的develop分支已回退到 “提取 release分支的某次提交到 develop分支”提交。而且本地倉庫落後遠端倉庫兩個提交記錄。
-
依然是同樣的操作。選中最新的提交歷史記錄,右鍵-》重置當前分支到此次提交
-
這次選的使用模式是軟合併 – 保持所有本地改動,點選確定
-
等待重置完。發現本地倉庫開發分支已和遠端倉庫開發分支同步。這個結果似乎看起來兩次重置抵消了一樣,程式碼版本沒有發生任何的變化。實際並不是這樣,這就是神奇之處,會讓你恍然大悟的地方。
-
切換到檔案狀態,可以看到本地工作副本多了一個test1.txt的改動檔案,而且改動檔案的內容正好刪除了 新增test1和新增test2兩次提交所修改的內容。
-
那麼,剩下的操作只需將這個改動檔案提交併推送到遠端倉庫,是不是就OK了?
下面嘗試,提交併推送該改動檔案。如下圖,推送之後的效果。
-
如下圖,可以看出本地工作副本和遠端倉庫的 add test1 和 add test2內容都被回退掉了。也就是程式碼版本從內容上回退到了某個歷史版本,但是提交歷史記錄並沒有回退。Git只會增加提交歷史記錄,是不會回退或刪除提交記錄的。我們所說的回退都是指的回退內容。