推動一次變革

有時你需要用 rebase 重寫歷史記錄,但是 git push 抱怨這樣做是因為你重寫了歷史。

這可以通過 git push --force 來解決,但是考慮 git push --force-with-lease,表示如果本地遠端跟蹤分支與遠端分支不同,例如在最後一次獲取後推送到遠端的其他人,則希望推送失敗。這可以避免無意中覆蓋別人最近的推動。

注意git push --force - 甚至 --force-with-lease 就此而言 - 可能是一個危險的命令,因為它重寫了分支的歷史。如果另一個人在強制推動之前拉過分支,他/她的 git pullgit fetch 將會出錯,因為當地的歷史和遠端歷史是分歧的。這可能會導致此人出現意外錯誤。通過充分檢視 reflog,可以恢復其他使用者的工作,但這可能會導致大量浪費時間。如果你必須強制推送到其他貢獻者的分支,請嘗試與它們協調,以便它們不必處理錯誤。