Egit反复出现rejected-non-fast-forward报错且远程无变动如何解决?
问题解决步骤
这种远程分支无新提交但推送仍触发rejected-not-fast-forward报错的情况,核心是本地分支和远程的追踪关系异常或是Egit的内置校验逻辑bug,按以下顺序操作即可解决:
1. 修正分支追踪配置
打开Eclipse的Git Repositories视图,找到对应项目,展开「Branches > Local」,右键你当前使用的本地分支,选择「Properties」:
- 确认
branch.<你的分支名>.remote的取值为你实际绑定的远程仓库别名,默认是origin - 确认
branch.<你的分支名>.merge的取值为refs/heads/<对应远程分支名>
如果配置不匹配,直接修改为正确值后保存,重启Eclipse后重试推送。
2. 调整Egit全局推送配置
如果追踪配置正常,关闭Egit的自动优化类配置即可:
- 打开Eclipse顶部菜单「Preferences > Team > Git > Push」
- 取消勾选Auto rebase remote tracking branches on pull
- 取消勾选Amend previous commit automatically if no new changes are detected
- 保存配置后,先执行一次
git fetch origin拉取最新远程元数据,再执行git merge origin/<远程分支名>确认无冲突后重试推送。
3. 重置本地分支基准
如果前两步都无效,执行以下操作重置本地分支的提交基准:
操作前请先备份本地所有未提交的变更,避免丢失
- 将本地未提交的变更全部暂存或提交到本地分支
- 执行命令
git reset --soft origin/<远程分支名> - 重新提交你的本地变更后推送,后续即可正常使用。
内容的提问来源于stack exchange,提问作者lingar
相关产品推荐
相关产品推荐

