發表文章

目前顯示的是 1月, 2018的文章

[筆記] 不小心 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