Git推送遇non-fast-forward错误,pull却提示已同步,该如何解决?
解决Git Push时的非快进更新拒绝问题
嘿,我来帮你搞定这个问题~
首先,咱们先理清楚错误的根源:你创建my_new_branch时,是基于当时本地master的状态,但之后远程master已经有了新的提交。虽然你拉取了本地master的最新代码,但你的工作分支并没有同步这些更新,所以推送时Git会拒绝这种非快进操作——直接推送会覆盖远程的历史变更,这是Git的保护机制。
接下来是具体的解决步骤:
- 确保你当前在自己的工作分支上:
git checkout my_new_branch - 把本地已经更新好的
master分支合并到你的工作分支里:
如果这一步出现冲突,手动修改冲突文件后,执行以下命令完成合并:git merge mastergit add . git commit -m "合并master分支最新变更,解决冲突" - 第一次推送这个新分支到远程时,需要关联对应的远程分支(之后再推送就可以直接用
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
相关产品推荐
相关产品推荐

