git 撤銷相關操作

chenggx發表於2020-09-14

每次使用 git 需要進行版本回退相關的操作都要在搜尋引擎重新查詢相關命令,很是費時間,今天有空總結一下,算是記筆記方便以後使用。

撤銷本地當前所有修改


git reset --hard

如果本地檔案修改得一團亂,但是還沒有 commit,可以通過這個命令恢復到上次 commit 的狀態。

丟棄 commit


git reset --hard commitID

將程式碼恢復到指定的 commitID 處。如果不指定 –hard 引數,那麼不會改變工作區的檔案。(一般使用都會帶上該引數)

撤銷 commit


git revert HEAD

commit 程式碼以後,你突然意識到這個 commit 有問題,應該撤銷掉,這時執行該命令就可以了。該命令會新生成一個 commit 提交記錄,並不改變其他內容,在 log 中可檢視到撤銷記錄。基本屬於撤銷操作的首先方案。

該命令還有兩個常用引數

  • –no-edit:執行時不開啟預設編輯器,直接使用 Git 自動生成的提交資訊。

  • –no-commit:只抵消暫存區和工作區的檔案變化,不產生新的提交。

撤銷 add 操作


git reset HEAD [filename]

可選引數

filename 指定撤銷的檔案。(不使用該參數列示所有已經 add 了的檔案全部取消 add 狀態)

替換上一次 commit


git commit --amend -m "new Message"

如果我們在 commit 之後發現資訊寫錯了,這是可以使用該命令修改資訊。

這時如果暫存區有發生變化的檔案(也就是有檔案被 add 了),會一起提交到倉庫。所以,–amend不僅可以修改提交資訊,還可以整個把上一次提交替換掉。

暫時將未提交的變化移除,稍後再移入

$ git stash

$ git stash pop

如果我們在修改了一些檔案後發現不應該在這個分支上操作,那麼我們可以使用 git stash 將當前工作區的檔案儲存一下,然後切換的新分支,執行 git stash pop 將儲存的內容恢復到新分支。

時光機


git reflog

只要HEAD發生了變化, 就會在reflog裡面看得到。

配合 git reset 命令可以將程式碼切換到任意狀態。

取消已經 push 的行為(強制 PUSH)


# 查詢 git 所有變化日誌

git reflog

# 本地倉庫回退到某一版本

git reset -hard xxxx

# 強制 PUSH,此時遠端分支已經恢復成指定的 commit 了

git push origin master --force

程式設計師的藝術人生

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章