多人共用develop分支时,推不上去主因是远程有本地缺失提交,git拒绝non-fast-forward;须每日开工前git pull --rebase同步并暴露冲突,避免后期大量混合冲突;解冲突需人工比对三段标记,删标记后保留逻辑并检查语法;push被拒不可--force,应立即pull --rebase重整理;临时提交需用amend或交互式rebase清理。

多人共用一个分支(比如 develop)时,最常遇到的问题不是“怎么推上去”,而是“为什么推不上去”——根本原因是远程分支已有你本地没有的提交,Git 拒绝覆盖,报错 non-fast-forward。这不是故障,是保护机制。
每天开工前必须执行 git pull
这不是为了“同步最新代码”,而是主动暴露冲突。很多人习惯写完再拉,结果一拉就是一堆冲突,还夹杂着别人刚合进去的逻辑,定位困难。
- 推荐命令:
git pull --rebase origin develop,它把你的本地提交“叠”在远程最新提交之后,历史更线性,也更容易看出谁改了什么 - 如果提示
no tracking information,说明本地分支没关联远程分支,先运行:git branch --set-upstream-to=origin/develop develop - 别跳过这步直接
git push,否则大概率被拒,然后被迫处理更复杂的合并冲突
冲突标记怎么看、怎么删
VSCode 或 IDEA 会高亮冲突块,但底层还是靠三段标记识别: 是你本地的修改,<code>======= 是分界线,>>>>> origin/develop 是别人刚推上来的版本。
- 不能只删标记,必须保留最终要保留的代码逻辑;删完后检查上下文是否连贯(比如 if 缺少闭合大括号)
- 不要依赖
Accept Current Change或Accept Incoming Change一键解决——它们只适合明显互斥的改动,多数业务逻辑需要人工比对两段代码意图 - 解决完记得
git add 冲突文件名,否则git commit会失败
git push 被拒后别硬来
看到 rejected: non-fast-forward 就该停手。强行 git push --force 可能抹掉队友刚推送的提交,尤其在 CI/CD 已触发构建的情况下,后果严重。
- 正确做法:立刻
git pull --rebase origin develop,重新整理本地提交 - 如果 rebase 过程中又出现冲突,说明你上次拉取后别人又推了新东西——这是协作常态,按前面方法再解一次
- 确认无冲突后,
git push origin develop即可。不需要加--force,也不需要指定分支名(只要已设置 upstream)
真正容易被忽略的点是:多人共用分支时,没人负责“清理”临时提交。比如你本地有 5 个调试用的 git commit -m "test",rebase 后它们会全堆在远程历史里。建议日常开发用 git commit --amend 合并小修,或用交互式 rebase(git rebase -i HEAD~3)整理后再推送。











