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

为何未切换到指定分支的情况下,代码会被推送到他人的Git分支?

Git提交错误推送至他人分支的问题原因分析

问题场景

人员A在X分支开发,人员B在Y分支开发,人员C通过rebase和git fetch拉取了人员B的分支代码,操作过程中未执行快进合并。后续出现异常现象:每当人员A、B提交代码推送到各自分支时,GitHub端显示代码实际被推送到了人员C的分支。


根本原因

  • 本地分支上游跟踪配置错误:人员A、B的本地X、Y分支错误绑定了上游(upstream)分支为人员C的远程分支,而非自己对应的目标远程分支。默认执行git push命令时,Git会自动将代码推送到绑定的上游分支,直接导致提交落到C的分支下。
  • 远程分支引用被篡改:人员C执行rebase操作后,本地分支和对应的远程分支出现提交历史分叉,无法执行快进合并,此时如果C执行了git push --force强制推送,会直接篡改原本对应A、B的远程分支的HEAD指向,使其指向C本地分支的提交节点。后续A、B推送时因本地与远程分支历史分叉,若未校验分支指向就执行强制推送,就会将代码提交到已经被篡改、实际归属C的分支引用下。
  • Git推送规则配置异常:如果A、B本地的push.default配置被修改为非常规值,或错误配置了全局远程推送的目标分支前缀,也会导致所有未明确指定分支参数的推送操作,都默认指向C的远程分支。
  • 远程仓库规则配置错误:仓库管理员若错误配置了分支权限映射、分支引用重定向规则,将A、B分支的写入权限映射到了C的分支空间,所有推送到A、B分支的请求都会被自动重定向到C的分支下。

你场景中提到的「未执行快进合并」就是分支历史分叉的典型表现,此时如果不校验当前分支的上游指向、远程分支的归属就执行推送,极容易出现提交错分支的问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 05:06:07