全新克隆Git仓库后推送遭拒,提示分支落后如何解决?
解决Git推送提示"updates were rejected because the tip of your current branch is behind"的问题
从你的操作日志和分支信息来看,问题的核心在于本地分支estrom/PH-19312跟踪的是远程origin/release-18.9.0分支,但你尝试推送到的是远程同名分支origin/estrom/PH-19312,而这个远程分支的提交历史和你的本地分支不连续——要么是这个远程分支之前就存在且基于不同起点创建,要么是有你没拉取到的提交(但你提到无其他开发者提交,所以前者概率更高)。
下面是具体的解决步骤:
第一步:确认远程分支状态
先检查远程是否存在estrom/PH-19312分支,以及它的提交历史:
# 拉取最新的远程分支信息 git fetch origin # 查看远程estrom分支的提交记录 git log --oneline origin/estrom/PH-19312 # 对比本地分支的提交记录 git log --oneline estrom/PH-19312
如果发现远程分支的提交历史和本地完全不重合(比如远程分支基于其他分支创建),就能确定是历史不一致导致的推送失败。
第二步:根据情况选择解决方案
方案1:远程分支已废弃,直接安全强制推送
如果你确认远程的estrom/PH-19312分支是旧的、无人使用的,可以用更安全的强制推送覆盖它:
git push --force-with-lease origin estrom/PH-19312
--force-with-lease比普通--force更稳妥,它会检查远程分支是否有你未同步的新提交,如果有就会终止推送,避免意外覆盖他人修改。
方案2:需要保留远程分支内容,合并后推送
如果远程分支有需要保留的提交,先把远程分支内容合并到本地:
# 确保在本地estrom分支上 git checkout estrom/PH-19312 # 合并远程estrom分支到本地 git merge origin/estrom/PH-19312
如果合并时出现冲突,打开冲突文件手动解决,然后提交合并结果:
git add . git commit -m "Merge remote origin/estrom/PH-19312 into local branch" # 最后推送 git push origin estrom/PH-19312
方案3:重新设置分支跟踪关系(可选优化)
为了避免后续操作混淆,你可以将本地分支的跟踪目标改为远程的estrom/PH-19312分支:
git branch -u origin/estrom/PH-19312
这样以后执行git pull或git push时,默认就会和远程的estrom/PH-19312分支交互,无需额外指定。
内容的提问来源于stack exchange,提问作者EmmyS
相关产品推荐
相关产品推荐

