假設你有3個commit如下:
commit 3
commit 2
commit 1
其中最後一次提交commit 3
是錯誤的,那麼可以執行:
git reset --hard HEAD~1
你會發現,HEAD is now at commit 2
。如果你覺得你的有些代碼還需要的話可以在這條命令之前先本地保存一下或者重新創建一個臨時分支來保存代碼。
然後再使用git push --force
將本次變更強行推送至服務器。這樣在服務器上的最後一次錯誤提交也徹底消失了。
值得注意的是,這類操作比較比較危險,例如:在你的commit 3
之後別人又提交了新的commit 4
,那在你強制推送之後,那位仁兄的commit 4
也跟着一起消失了。
假如你只是想修改上次提交的代碼,做一次更完美的commit,可以這樣
(1)git reset commitId,(注:不要帶--hard)到上個版本
(2)git stash,暫存修改
(3)git push --force, 強制push,遠程的最新的一次commit被刪除
(4)git stash pop,釋放暫存的修改,開始修改代碼
(5)git add . -> git commit -m "massage" -> git push