1. 程式人生 > 其它 >Git 版本回退

Git 版本回退

原文連結:https://mp.weixin.qq.com/s/Rb6fNqvVdfHWRxc7zddPaQ

Git 中的撤銷操作,可以分為四類:

  1. 工作區的程式碼想撤銷
  2. add 到暫存區的程式碼想撤銷
  3. 提交到本地倉庫的程式碼想撤銷
  4. 遠端倉庫的程式碼想撤銷

1 基於命令列

1.1 工作區的程式碼想撤銷

可以通過git checkout -- <file>命令來撤銷工作區的程式碼修改。

首先執行了git status命令,發現工作區是乾淨的,然後執行了cat命令,發現檔案只有兩行內容,然後通過 vi 編輯器向檔案中新增一行,儲存並退出,退出來之後又執行了git status命令,此時工作區的狀態已經發生變化,然後執行了git checkout -- git01.txt

命令,表示撤銷之前的操作,讓git01.txt恢復到之前的狀態,該命令執行成功後,再執行cat命令發現檔案內容已經恢復了,此時再執行git status命令,狀態也恢復了。

1.2 add 到暫存區的程式碼想撤銷

通過以下兩個步驟即可:

  1. 將暫存區的程式碼撤銷到工作區;
  2. 將工作區的程式碼撤銷(具體操作和 1.1 一樣)。

將暫存區的程式碼撤銷,可以使用git reset HEAD命令實現,如下:

核心過程就是先執行git reset HEAD命令,從暫存區撤銷,然後參照 1.1 小節命令。

1.3 提交到本地倉庫的程式碼想撤銷

可以利用git reset --hard <版本號>

命令來實現版本回退,該命令中的版本號有幾種不同的寫法:

  • 可以使用HEAD^來描述版本,一個^表示前一個版本,兩個^^表示前兩個版本,以此類推;
  • 也可以使用數字來代替^,比如說前 100 個版本可以寫作HEAD~100
  • 也可以直接寫版本號,表示跳轉到某一個版本處。每次提交後,都會生成一個雜湊碼作為版本號,所以這裡可以直接填版本號,雜湊碼很長,但是不用全部輸入,只需要輸入前面幾個字元即可。

通過以下幾個步驟為例:

  1. 通過git log檢視當前提交日誌;
  1. 通過git reset --hard HEAD^^向前回退兩個版本;
  1. 檢視日誌,發現最後一次提交的版本號是695ce1fe,利用git reset --hard 695ce1fe
    命令回退到之前的狀態;
  1. 通過git reset --hard HEAD^回退到上一個版本;

1.4 遠端倉庫程式碼撤銷

先在本地倉庫撤銷,然後 push 到遠端倉庫即可。

2 基於 IDEA

2.1 未提交就撤銷

對於 第一小節基於命令列 的前兩種撤銷操作,即修改的檔案還沒 commit,此時想要撤銷,非常簡單,點選 IDEA 工具欄的撤銷按鈕即可。

如果修改了檔案,無論有沒有執行git add命令,只要沒有 commit,都可以通過撤銷按鈕來撤銷修改,點選該按鈕,彈出如下提示框:

這裡會列出來所有修改但是沒有 commit 的檔案,想要撤銷哪個檔案的修改,就勾選該檔案,然後點選 Rollback 按鈕就完成了撤銷操作。

2.2 commit 了想撤銷

如果已經 commit 了,那麼就需要先開啟提交日誌,點選如下按鈕開啟:

也可以點選 IDEA 工具欄的時鐘圖示,快速開啟提交日誌:

提交日誌類似下面這樣:

此時的回退分情況,有兩種:

  • Undo Commit
  • Revert Commit

下面分別介紹兩種情況。

2.2.1 Undo Commit

這個操作只能在最近一次提交上使用,不能在其它提交上使用,最近一次提交上右鍵單擊,如下:

如果在其它的 commit 上單擊,如下:

既然如此,就來看看如何在最近一次提交上實現 Undo Commit。
在最近一次提交 commit 日誌上右鍵單擊選擇 Undo Commit,如下:

選中後,直接點選 OK,撤銷最近一次的 Commit。撤銷之後,本地的修改相當於變成了已 add 但是未 commit 的狀態,此時可以繼續開發新程式碼,然後再 commit,再 push。

2.2.2 Revert Commit

這個操作到處都能用,不同於 Undo Commit,Revert Commit 之後,會產生一條提交記錄。相當於 Revert Commit 其實也是一次提交,只不過提交的內容剛好相反,剛好刷掉已有內容。
Revert Commit 操作可以用在所有的提交日誌上,而不僅僅是最近一次的提交。

具體操作步驟如下:

找到需要回退的地方,右鍵點選,選擇 Revert Commit:

此時會彈出來一個提交的對話方塊,就是一個普通的 commit 對話方塊,如下:

commit 之後,可以看到內容已經撤銷了,提交日誌中也多了一條記錄,如下:

2.3 push 了想撤銷

先在本地倉庫撤銷,撤銷完成後,重新修改程式碼,最後再 push 即可。

END


作者:超級鯊魚辣椒
轉載請註明原文連結:https://www.cnblogs.com/jinzlblog/p/15949162.html