17

我有一个跟踪非默认分支的仓库。因此,有一个名为“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
4

2 回答 2

21

行。使用您添加的信息,我认为您只需更改push.default为 value 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 配置(搜索push.default)。

于 2013-06-11T13:54:21.270 回答
0

使用 Git 2.20(2018 年第四季度),建议将略有变化。

请参阅Ævar Arnfjörð Bjarmason ( ) 的提交 8247166(2018 年 11 月 13 日(由Junio C Hamano 合并——提交 2c23f0b中,2018 年 12 月 1 日)avar
gitster

push: 错误地更改不必要的模棱两可的例子

将b55e677中添加的示例推送(“推送:引入新push.default模式” simple“”,2012-04-24,v1.7.11-rc0)更改为无论当前设置是否为“”,始终表示相同的含义simple

此错误仅在“ simple”下发出,但消息向用户解释他们可以通过这两个调用获得两种不同的行为。

让我们使用:

  • " git push <remote> HEAD" 始终意味着将当前分支名称推送到该远程,
  • 而不是“ git push <remote> <current-branch-name>”,它将在“ ”下执行simple,但不保证在“ upstream”下执行。
于 2018-12-02T02:14:23.103 回答