公共历史是指远程仓库中的提交历史。
公共历史不宜修改
远程仓库中的提交历史通常都是有意义的。
过于琐碎的提交,不利于团队成员之间的协作。本地的多个小修改提交,通常可以通过git rebase -i
命令合成为一个大的,更有意义的提交,然后推送到远程仓库,分享给团队成员。一旦提交推送到远程仓库后,通常不会再去修改。
另外修改远程仓库中的提交有可能覆盖其他人的推送,因此一般不建议修改。
安全修改公共历史
如果一定要修改公共历史,按如下步骤进行:
- 在本地使用
git rebase -i
修改提交历史 - 使用
git push --force-with-lease
推送到远程仓库- 使用
git push
命令会报错,不允许推送 - 使用
git push -- force
过于危险,有可能会覆盖其他人的推送 - 使用
git push --force-with-lease
,在推送之前,将检查本地版本与对应分支的远程版本是否匹配,这样,你就可以确保在重写历史时,不会意外地擦除其他人推送的更改! 过程如下图所示:
- 使用
注意
不要修改公共历史,除非你清楚自己在做什么。如果一定要修改,要注意安全,使用
git push --force-with-lease
。