推动一次变革

有时你需要用 rebase 重写历史记录,但是 git push 抱怨这样做是因为你重写了历史。

这可以通过 git push --force 来解决,但是考虑 git push --force-with-lease,表示如果本地远程跟踪分支与远程分支不同,例如在最后一次获取后推送到远程的其他人,则希望推送失败。这可以避免无意中覆盖别人最近的推动。

注意git push --force - 甚至 --force-with-lease 就此而言 - 可能是一个危险的命令,因为它重写了分支的历史。如果另一个人在强制推动之前拉过分支,他/她的 git pullgit fetch 将会出错,因为当地的历史和远程历史是分歧的。这可能会导致此人出现意外错误。通过充分查看 reflog,可以恢复其他用户的工作,但这可能会导致大量浪费时间。如果你必须强制推送到其他贡献者的分支,请尝试与它们协调,以便它们不必处理错误。