2 回答

TA貢獻(xiàn)1806條經(jīng)驗 獲得超8個贊
沒有,只能 git reset --hard
然后 git push -f
。
你的問題詢問的是如何撤銷 remote 的 commit,唯一的辦法就是本地修正然后又強(qiáng)制推送,并且很多人都已經(jīng)提到,強(qiáng)制推送是非常壞的實踐,除非必要或者個人未公開項目或者小團(tuán)隊項目(溝通成本較低)才可行。
貌似你想清理提交歷史,那么 git 相比于其它 VCS 在這方面絕對是非常在行的。你可以使用 git rebase
命令對歷史進(jìn)行重構(gòu),可以重新排序、合并、拆分一些提交,總之完全足夠清理你所謂的臟歷史。如果你想要對整個歷史做某些確定的修改,還有 git fileter-branch
命令可用,非常靈活,相當(dāng)值得深入。
說說我的提交流程吧,我一般是對一個文件進(jìn)行修改直到達(dá)到我的目的后才開始進(jìn)行提交,這個時候我也不是只直接做一次提交,而是使用 vim 和 vim-fugitive 插件,在 diff 模式下打開工作區(qū)和暫存區(qū),然后在暫存區(qū)重新一步一步的重現(xiàn)我的修改,在適當(dāng)?shù)臅r候進(jìn)行提交。由于我已經(jīng)完成了整個修改,所以我很清楚每個修訂該誰先誰后,所以能夠做到比較干凈清晰和“原子性”(即一個提交只做一個特定的修改,而不是混合若干個修改)的提交,方便其他人進(jìn)行代碼審閱。
- 2 回答
- 0 關(guān)注
- 239 瀏覽
添加回答
舉報