git push 不指定分支时的默认行为是什么

Git 2.0 起 push.default 默认值为 simple:git push 只推送当前分支到远程同名上游分支,分支名不一致或未设上游会报错。可用 git config push.default 修改,推荐显式 git push -u origin <分支>。

最佳实践
Git 分支协作与合并示意

现代 Git(2.0 及以后)默认行为是 simple:只推送当前分支到它的上游(同名远程分支);没设上游或名字不一致时拒绝执行并报错提示。 老版本 Git 1.x 的默认是 matching——把所有本地与远程同名的分支全部推上去,容易误推,2.0 起被废弃。

push.default 各取值

值 行为
simple(默认) 只推当前分支,要求远程同名上游存在
current 推当前分支到远程同名分支,不存在则创建
upstream 推当前分支到其配置的上游分支(名字可不同)
matching 推送所有与远程同名的本地分支(旧默认,危险)
nothing 不指定分支就报错,强制显式

查看与修改:

git config push.default          # 查看当前设置
git config --global push.default current   # 例如改为 current

推荐的显式习惯

git push -u origin feature-x     # 首次推送并建立跟踪
git push                         # 之后直接推(upstream 已确定)

-u 建立跟踪关系后,裸 git push / git pull 才有明确目标,git status 也会显示"领先/落后远程几个提交"。

常见问题(FAQ)

Q:报 "The current branch has no upstream branch" 怎么办?

当前分支还没关联远程分支。按提示执行 git push --set-upstream origin <分支名>(即 -u)一次即可。

Q:matching 为什么危险?

一句 git push 可能把你本地十几个半成品分支全部推上远程,甚至覆盖别人的同名分支。这就是 Git 2.0 改默认值的直接原因。

Q:push 到不同名的远程分支怎么写?

git push origin 本地名:远程名。设过 upstream 后裸 git push 也能用(配合 upstream 模式)。

参考资料

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台