本地分支与远程上游分支变基后推送失败问题及相关疑问
Git变基后推送失败及分支同步问题
一、推送报错的原因及解决办法
你遇到的Updates were rejected because the tip of your current branch is behind...错误,核心原因是变基改写了本地分支的提交历史:
- 变基操作会把你本地分支的所有提交,重新“嫁接”到上游仓库的最新提交之后,相当于生成了全新的提交序列,和远程(origin)分支的历史完全不匹配。
- Git默认拒绝这种历史不一致的推送,因为直接推送会覆盖远程分支的原有历史,存在风险。
解决方法是使用安全强制推送,命令如下:
git push origin <你的分支名称> --force-with-lease
--force-with-lease比直接用--force更安全,它会先检查远程分支是否有其他人的新提交,只有在远程分支和你上次拉取的状态一致时才会推送,避免误覆盖他人的修改。
二、本地变基后,源(origin)分支会不会自动同步?
不会。变基是纯本地操作,只会修改你本地仓库的分支历史,远程的origin分支依然保持变基前的状态。只有通过上面的强制推送操作,才能让origin分支和本地变基后的分支同步。
额外注意
如果你的分支是多人协作使用的,不建议对已推送到远程的分支进行变基——因为变基改写历史后,其他协作者拉取分支时会遇到冲突,需要额外的操作来同步。只有分支是你个人独占使用时,变基后强制推送才是安全的。
内容的提问来源于stack exchange,提问作者Sumit Gupta
相关产品推荐
相关产品推荐

