我有一个跟踪非默认分支的仓库。因此,有一个名为“master”的本地分支应该跟踪“origin / master-13.07”。我已经完成了“push -u”,我相信它应该足够了,分支被跟踪。输出git branch -vv
:
C:\work\repo>git branch -vv
stuff 68792df [origin/stuff-13.07] Small bugfix
* master 68792df [origin/master-13.07: ahead 1] Small bugfix
git status
C:\work\repo>git status
# On branch master
# Your branch is ahead of 'origin/master-13.07' by 1 commit.
# (use "git push" to publish your local commits)
#
nothing to commit, working directory clean
一切似乎都没问题,但是当我只使用“git push”时(正如git上面推荐我的那样),它失败了:
C:\work\repo>git push
fatal: The upstream branch of your current branch does not match
the name of your current branch. To push to the upstream branch
on the remote, use
git push origin HEAD:master-13.07
To push to the branch of the same name on the remote, use
git push origin master
是的,我知道这个名字不匹配,这正是我想要的,我告诉他们通过“push -u”来git。为什么我不能只使用“推”?
C:\work\repo>git --version
git version 1.8.3.msysgit.0
C:\work\repo>git config push.default
simple
答案 0 :(得分:18)
确定。根据您添加的信息,我认为您只需将push.default
更改为值upstream
。
您可能在升级Git并看到此消息后配置了实际值:
warning: push.default is unset; its implicit value is changing in
Git 2.0 from 'matching' to 'simple'. To squelch this message
and maintain the current behavior after the default changes, use:
git config --global push.default matching
To squelch this message and adopt the new behavior now, use:
git config --global push.default simple
根据文档,当分支名称不同时,值simple
必须拒绝推送。请参阅Git Config(搜索push.default
)。
答案 1 :(得分:0)
在Git 2.20(2018年第四季度)中,建议将略有变化。
请参见commit 8247166的Ævar Arnfjörð Bjarmason (avar
)(2018年11月13日)。
(由Junio C Hamano -- gitster
--在commit 2c23f0b中合并,2018年12月1日)
push
:错误地更改了含糊不清的示例更改在b55e677中添加的示例推送(“ push:引入新的
push.default
模式“simple
””,2012-04-24,v1.7.11-rc0)始终表示无论当前设置碰巧是“simple
”,还是同样的事情。此错误仅在“
simple
”下发出,但消息向用户解释说,通过这两次调用,他们可以得到两种不同的行为。让我们使用:
- “
git push <remote> HEAD
”始终意味着将当前分支名称推送到该远程主机- 代替“
git push <remote> <current-branch-name>
”,它将在“simple
”下执行该操作,但不能保证在“upstream
”下执行该操作。