You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Git推送遇non-fast-forward错误,pull却提示已同步,该如何解决?

解决Git Push时的非快进更新拒绝问题

嘿,我来帮你搞定这个问题~

首先,咱们先理清楚错误的根源:你创建my_new_branch时,是基于当时本地master的状态,但之后远程master已经有了新的提交。虽然你拉取了本地master的最新代码,但你的工作分支并没有同步这些更新,所以推送时Git会拒绝这种非快进操作——直接推送会覆盖远程的历史变更,这是Git的保护机制。

接下来是具体的解决步骤:

  1. 确保你当前在自己的工作分支上:
    git checkout my_new_branch
    
  2. 把本地已经更新好的master分支合并到你的工作分支里:
    git merge master
    
    如果这一步出现冲突,手动修改冲突文件后,执行以下命令完成合并:
    git add .
    git commit -m "合并master分支最新变更,解决冲突"
    
  3. 第一次推送这个新分支到远程时,需要关联对应的远程分支(之后再推送就可以直接用git push了):
    git push --set-upstream origin my_new_branch
    

至于你之前执行git pull和git merge origin/master没看出问题的原因:git pull默认拉取当前分支对应的远程分支,但此时你的my_new_branch还没关联远程分支,所以这步没起到实际作用;而git merge origin/master虽然会合并远程master的最新代码,但如果本地master已经是最新的,这步和合并本地master效果一致,但关键是要把这些变更合并到你的工作分支里,而不是停留在master分支上。

按上面的步骤操作后,你的工作分支就包含了远程master的所有最新变更,推送就不会再被拒绝啦~

内容的提问来源于stack exchange,提问作者MeltingDog

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:42:19