SourceTree使用教程(六)--回滾版本到某次提交

在SourceTree使用教程(五)中講到了提交的撤銷回滾,並且註明這個撤銷回滾只能撤銷回滾最新的提交記錄,並不能回滾到某個歷史版本。但是實際使用場景中肯定會遇到需要回退到某個提交的,而不僅僅是最新的提交。本次教程將講述如何使用SourceTree來回退代碼到某次提交。

方法/步驟

  1. 1

    打開sourceTree,切換到開發分支

    SourceTree使用教程(六)--回滾版本到某次提交
  2. 2

    打開本地工作副本test1.txt文件,編輯新增 add test1 

    SourceTree使用教程(六)--回滾版本到某次提交
  3. 3

    提交併推送本次新增到遠程倉庫

    SourceTree使用教程(六)--回滾版本到某次提交
  4. 4

    打開本地工作副本test1.txt文件,編輯新增 add test2

    SourceTree使用教程(六)--回滾版本到某次提交
  5. 5

     提交併推送本次修改到遠程倉庫,可以看到最新的歷史記錄在本地倉庫和遠程倉庫都已有了新增test1和新增test2

    SourceTree使用教程(六)--回滾版本到某次提交
  6. 6

    如果這個時候突然發現前面的兩次提交是錯誤的,現在想回到“提取release分支的某次提交到develop分支”這個版本。有兩種解決方式,第一種是刪除掉新增test1和新增test2兩次提交所加的內容,但是這有個前提,是修改內容很少的情況下纔可以採用此方法,否則會陷入無窮無盡的代碼比對泥沼。那麼第二種方式就是該教程將要講述的。回退到某個歷史版本。

    SourceTree使用教程(六)--回滾版本到某次提交
  7. 7

    切換到sourceTree界面,打開develop分支的日誌/歷史,鼠標選中將要回退到的那個歷史提交記錄

    SourceTree使用教程(六)--回滾版本到某次提交
  8. 8

    右鍵-》重置當前分支到此次提交

    SourceTree使用教程(六)--回滾版本到某次提交
  9. 9

    在彈窗中 使用模式選擇 強行合併--丟棄所有改動過的工作副本,點擊確定

    SourceTree使用教程(六)--回滾版本到某次提交
  10. 10

    等待重置完,可以看到本地倉庫的develop分支已回退到 “提取 release分支的某次提交到 develop分支”提交。而且本地倉庫落後遠程倉庫兩個提交記錄。

    SourceTree使用教程(六)--回滾版本到某次提交
  11. 11

    依然是同樣的操作。選中最新的提交歷史記錄,右鍵-》重置當前分支到此次提交

    SourceTree使用教程(六)--回滾版本到某次提交
  12. 12

    這次選的使用模式是軟合併 – 保持所有本地改動,點擊確定

    SourceTree使用教程(六)--回滾版本到某次提交
  13. 13

    等待重置完。發現本地倉庫開發分支已和遠程倉庫開發分支同步。這個結果似乎看起來兩次重置抵消了一樣,代碼版本沒有發生任何的變化。實際並不是這樣,這就是神奇之處,會讓你恍然大悟的地方。

    SourceTree使用教程(六)--回滾版本到某次提交
  14. 14

    切換到文件狀態,可以看到本地工作副本多了一個test1.txt的改動文件,而且改動文件的內容正好刪除了 新增test1和新增test2兩次提交所修改的內容。

    SourceTree使用教程(六)--回滾版本到某次提交
  15. 15

    那麼,剩下的操作只需將這個改動文件提交併推送到遠程倉庫,是不是就OK了?

    下面嘗試,提交併推送該改動文件。如下圖,推送之後的效果。

    SourceTree使用教程(六)--回滾版本到某次提交
  16. 16

    如下圖,可以看出本地工作副本和遠程倉庫的 add test1 和 add test2內容都被回退掉了。也就是代碼版本從內容上回退到了某個歷史版本,但是提交歷史記錄並沒有回退。Git只會增加提交歷史記錄,是不會回退或刪除提交記錄的。我們所說的回退都是指的回退內容。

    SourceTree使用教程(六)--回滾版本到某次提交
    END

注意事項

  • 回退指的是內容的回退,而不是提交記錄的回退
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章