Rebase本地分支后Git Push被拒,正确操作流程是什么?
问题解决:Rebase后推送分支遇到non-fast-forward错误
为什么会报错?
你对本地分支feature/b执行了rebase操作,这会改写分支的提交历史——远程仓库里的feature/b还是你rebase前的旧提交链,而本地分支已经是基于最新develop的新提交链,两者提交历史不连续,Git默认拒绝这种非快进式推送,所以抛出该错误。
能不能用--force强制推送?
分场景判断:
- 如果
feature/b是你个人独用的特性分支,没有其他开发者在上面提交代码,且尚未合并到主分支,那强制推送是完全合理的操作。 - 但别直接用
--force,换成--force-with-lease更安全。--force会粗暴覆盖远程分支,万一你拉取develop后,有人偷偷往远程feature/b提交了代码,--force会直接抹掉他们的工作;而--force-with-lease会先校验远程分支状态,只有当远程分支和你上次拉取的版本一致时才会推送,能避免误删他人提交。
正确操作步骤
- 确保当前处于目标分支:
git checkout feature/b
- 执行安全的强制推送:
git push --force-with-lease origin feature/b
红线提醒
如果feature/b是多人协作的分支,绝对不能强制推送——这会破坏所有人的提交历史。这种场景下,你应该放弃rebase,改用git merge develop合并远程变更后再正常推送。
内容的提问来源于stack exchange,提问作者Bondo Kalombo
相关产品推荐
相关产品推荐

