我有一個壞的推送提交。
如何撤銷此提交,並返回到我的工作樹(之前)?git恢復後,工作樹保持不變
這將導致我右工作樹:
git checkout HEAD~1
這將導致我右承諾,但工作樹是一樣的不必要的文件:
git revert HEAD~1
如何徹底回滾到以前的承諾?
我的意思是,我不應該承諾分離HEAD,對吧? (在git checkout <commit>
的情況下)
我有一個壞的推送提交。
如何撤銷此提交,並返回到我的工作樹(之前)?git恢復後,工作樹保持不變
這將導致我右工作樹:
git checkout HEAD~1
這將導致我右承諾,但工作樹是一樣的不必要的文件:
git revert HEAD~1
如何徹底回滾到以前的承諾?
我的意思是,我不應該承諾分離HEAD,對吧? (在git checkout <commit>
的情況下)
根據this answer,git revert HEAD
是你應該使用的;但是,如果還原提交添加了任何文件或文件夾,它們將作爲未跟蹤文件留在工作副本中。要擺脫它們,請運行git clean
(如this answer中所述)。
UPDATE:我在本地測試後編輯了必要的命令,只是簡單地編輯了git revert HEAD
。應該不需要運行git clean
。正如鏈接的答案所解釋的,git revert
提交傳遞給它的提交的「反向合併」,所以如果HEAD~1
是您想要的最終結果,則應該將HEAD
傳遞到git revert
。
如果您想完全回滾到之前的提交併從歷史記錄中刪除錯誤提交。
git reset --hard HEAD~1
你說你* *推壞的承諾,你想只回滾的變化在本地或遠程回購呢?兩者都不同。根據您的遠程repo權限,您可能無法刪除遠程repo的錯誤提交,您可能只能進行提交以解除更改。 –