Git推送被要求拉取,新建仓库也出现该问题,提PR为何无法解决?
Git推送提示分支落后报错的解决方案
问题本质
该报错的核心原因是本地分支的提交记录与远程分支存在差异,远程持有本地没有的提交内容。即便是新建仓库也触发报错,基本是因为创建远程仓库时勾选了自动生成README、LICENSE或.gitignore文件,远程初始化时生成的提交记录本地不存在,必须先合并这部分内容才能推送。
不同场景的解决步骤
常规已有仓库推送报错
- 先拉取对应远程分支的最新内容,合并到本地分支:
git pull origin <你的分支名> - 如果提示存在合并冲突,打开冲突文件调整保留需要的内容后,执行提交操作:
git add <冲突文件路径>git commit -m "合并远程分支冲突" - 完成合并后再执行推送即可:
git push origin <你的分支名>
新建仓库首次推送报错
这种场景拉取时建议添加--rebase参数,避免生成无意义的合并提交:
- 执行拉取合并命令:
git pull --rebase origin main(如果仓库默认分支为master则替换为master) - 无冲突的情况下直接推送即可:
git push origin main
提交PR后本地推送仍报错
提交PR后如果有其他协作者向目标分支提交了新内容,或是PR已经被合入远程生成了合并提交,都需要先拉取最新的远程内容合并到本地后,再推送新的修改,操作步骤参考常规已有仓库的处理流程。
规避方法
- 本地仓库和新的远程仓库关联时,若远程已经完成初始化生成了文件,不要直接提交后就推送,先执行一次pull操作同步远程内容
- 每次推送修改前,可以先执行
git fetch查看远程是否有新提交,提前同步避免推送报错
注意:如果确定本地内容为最新版本,不需要保留远程提交内容,可以使用强制推送覆盖远程分支,该操作仅建议在个人项目、确认不会影响其他协作者的情况下使用:
git push -f origin <你的分支名>
内容的提问来源于stack exchange,提问作者Kevin Rodrigues
相关产品推荐
相关产品推荐

