每次使用 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 協議》,轉載必須註明作者和本文連結