[筆記] 不小心 Git push 了含有錯誤內容的 commit 怎麼辦?
狀況:
想要修改已經 push 的 commit,
而且很慘的是,剛剛也不小心已經在 Server 上執行 git pull 了,怎麼辦?
步驟一:修改最後一次的 Commit
完成如 git add
等 commit 變動後,將 git commit
的步驟加上 --amend
參數,如:
(local) $ git commit --amend --no-edit
運用此參數,git 就會直接修改最後一次的 commit,而不會增加新的 commit。
這裡我們又加了 --no-edit
參數,就是不修改原本 commit 訊息的意思。
步驟二:強制 push 遠端分支
接著強制覆寫遠端 git 的分支紀錄
(local) $ git push -f
步驟三:Server 強制 pull
因為 Server 留有錯誤的 commit,所以要透過 rebase
來更改。
(server) $ git pull --rebase
20190213 更新:不對,比較好的做法是 reset
,否則錯誤檔案會留在工作目錄。
(server) $ git fetch # 先取得最新的樹
(server) $ git reset origin/master --hard # 再 hard reset 到正確的 origin/master
延伸閱讀
關於各個指令的詳細資訊,以下資料有更完整的敘述和說明:
- 【狀況題】追加檔案到最近一次的 Commit - 為你自己學 Git
- 【狀況題】怎麼有時候推不上去… - 為你自己學 Git
- Pull 下載更新 - 為你自己學 Git