git 中的撤銷操作,可以分為四類:
工作區的**想撤銷
add 到暫存區的**想撤銷
提交到本地倉庫的**想撤銷
遠端倉庫的**想撤銷
可以通過git checkout --
命令來撤銷工作區的**修改。
首先執行了git status
命令,發現工作區是乾淨的,然後執行了cat
命令,發現檔案只有兩行內容,然後通過 vi 編輯器向檔案中新增一行,儲存並退出,退出來之後又執行了git status
命令,此時工作區的狀態已經發生變化,然後執行了git checkout -- git01.txt
命令,表示撤銷之前的操作,讓git01.txt
恢復到之前的狀態,該命令執行成功後,再執行cat
命令發現檔案內容已經恢復了,此時再執行git status
命令,狀態也恢復了。
通過以下兩個步驟即可:
將暫存區的**撤銷到工作區;
將工作區的**撤銷(具體操作和 1.1 一樣)。
將暫存區的**撤銷,可以使用git reset head
命令實現,如下:
核心過程就是先執行git reset head
命令,從暫存區撤銷,然後參照 1.1 小節命令。
可以利用git reset --hard 《版本號》
命令來實現版本回退,該命令中的版本號有幾種不同的寫法:
通過以下幾個步驟為例:
通過git log
檢視當前提交日誌;
通過git reset --hard head^^
向前回退兩個版本;
檢視日誌,發現最後一次提交的版本號是695ce1fe
,利用git reset --hard 695ce1fe
命令回退到之前的狀態;
通過git reset --hard head^
回退到上乙個版本;
先在本地倉庫撤銷,然後 push 到遠端倉庫即可。
對於 第一小節基於命令列 的前兩種撤銷操作,即修改的檔案還沒 commit,此時想要撤銷,非常簡單,點選 idea 工具欄的撤銷按鈕即可。
如果修改了檔案,無論有沒有執行git add
命令,只要沒有 commit,都可以通過撤銷按鈕來撤銷修改,點選該按鈕,彈出如下提示框:
這裡會列出來所有修改但是沒有 commit 的檔案,想要撤銷哪個檔案的修改,就勾選該檔案,然後點選 rollback 按鈕就完成了撤銷操作。
如果已經 commit 了,那麼就需要先開啟提交日誌,點選如下按鈕開啟:
也可以點選 idea 工具欄的時鐘圖示,快速開啟提交日誌:
提交日誌類似下面這樣:
此時的回退分情況,有兩種:
下面分別介紹兩種情況。
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 之後,可以看到內容已經撤銷了,提交日誌中也多了一條記錄,如下:
先在本地倉庫撤銷,撤銷完成後,重新修改**,最後再 push 即可。
Git版本回退
1 檢視檔案修改歷史 git log 返回的是commit後的操作記錄 git log pretty oneline 也可以使用這個命令格式化日誌輸出 2 版本回退 git reset hard head 回退到上乙個版本 git reset hard head 100 會退到第100個版本,例如現...
git版本回退
先說今天遇到的問題,看到乙個config.php的配置檔案一直在修改的狀態下,但是和遠端的config.php是不一致的,我不需要提交它,但是看它在 modified的狀態下,很不爽,想刪除它,git rm config.php,然後git push了下,結果不僅把本地的config.php乾掉了,...
git版本回退
把修改後的版本通過命令提交到版本庫 第一步 git add 檔名 字尾 第二步 git commit m commit id 但是有時候想回去怎麼辦呢?當然萬能的git給我們提供了方法的。我們先檢視一下最近到最遠的提交紀錄操作如下 在命令航輸入 git log 會顯示提交日誌,但是嫌輸出過多怎麼辦,...