警告:push.default未设置; 它的隐含值在Git 2.0中发生了变化

Mar*_*rko 1615 git version-control

我一直在使用Git一段时间,并且最近只下载了一个更新,以便在我尝试时发现此警告消息push.

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
Run Code Online (Sandbox Code Playgroud)

我显然可以将它设置为所提到的值之一,但它们是什么意思?simple和之间有什么区别matching

如果我在一个客户端上更改它,我是否需要在我共享回购的其他客户端上做任何事情?

ham*_*mar 2142

它在文档中有详细解释,但我会总结一下:

  • matching意味着git push所有本地分支推送到远程上具有相同名称的分支.这样很容易意外地推动您不想要的分支.

  • simplemeans git push仅将当前分支推送到git pull将从中拉出的分支,并检查其名称是否匹配.这是一种更直观的行为,这就是默认情况发生变化的原因.

此设置仅影响本地客户端的行为,可以通过显式指定要在命令行上推送哪些分支来覆盖此设置.其他客户端可以具有不同的设置,它只会影响您未指定要推送哪些分支时发生的情况.

  • 在警告消息本身中有一个非常清晰的摘要,而不是告诉我们打开文档并搜索字符串的指令,这样会好得多. (123认同)
  • _"这在文档中非常清楚地解释了" - 当然,如果你最终出现在正确的页面上,不过是[git push]的手册(https://www.kernel.org/pub/software/scm/git/ docs/git-push.html)甚至没有提到**simple**这个词,这可能是很多人在这里结束的. (115认同)
  • 动机是,根据经验,大多数人都期望新的默认行为 (51认同)
  • hammar的摘要比git docs更简洁. (36认同)
  • 很高兴知道这种变化.当我刚开始使用git时,我不小心推动了所有本地分支机构认为`git push`只会推送当前的分支. (16认同)
  • 等等,所以如果你做`git config --global push.default simple`你将如何覆盖它并通过一次性命令行推送匹配 (4认同)
  • 实际上,git docs和hammar的解释一样简洁.然而,哈马尔的解释对我来说更有用,因为它解释了**为什么**除了以更容易理解的方式解释行为之外,你还要选择其中一个.通常情况下,git docs为git专家提供了解释.我读了`push.default`的git docs条目,但仍然丢失了.这个答案使事情变得非常清楚. (4认同)
  • 小心!如果你在你的机器上设置了push.default = simple,那么要小心,然后用`matching`发出`git push -f`给别人.它会强行推动所有远程分支机构! (3认同)
  • 这种变化背后有什么动机吗? (2认同)
  • 有没有办法在全局设置中配置`simple`以通过所有计算机上的dotfiles进行交换,同时具有计算机特定的`〜/ dotfiles/.git/config`设置`匹配`用于旧版本的Git无法处理` simple`? (2认同)
  • @JJD:存储库的本地`$ repo/.git/config`文件将始终覆盖其他可用的gitconfig文件,包括`〜/ .gitconfig`.如果您移植全局配置,只需使用`git config push.default matching`覆盖旧存储库上的设置. (2认同)
  • 那么`simple`和`upstream`之间的区别是什么? (2认同)

Bil*_*ill 19

我意识到这是一个很老的帖子但是因为我遇到了同样的问题并且很难找到答案我认为我会添加一些.

所以@ hammar的回答是正确的.使用push.default simple是,在某种程度上,就像在配置上你的分支跟踪,所以你并不需要推拉时指定的遥控器和分支机构.该matching选项会将所有分支推送到默认远程控制器上的相应对应部分(这是第一个设置的部分,除非您已配置了您的存储库).

我希望其他人在将来发现有用的一件事是我在OS X Mountain Lion上运行Git 1.8并且从未看到过这个错误.升级到Mavericks是突然出现的(运行git --version将显示git version 1.8.3.4 (Apple Git-47)我在操作系统更新之前从未见过的).

  • 升级到小牛队后我也开始看到这个.所以我猜Git与小牛同时升级,就像你暗示的那样. (2认同)

Tom*_*ron 8

如果你从git收到一条消息抱怨simple配置中的值,请检查你的git version.

在升级XCode(Mac运行中Mountain Lion),也git1.7.4.4升级到1.8.3.4之后,在升级之前启动的shell仍在运行git 1.7.4.4并且抱怨simple全局配置中push.default 的值.

解决方案是关闭运行旧版本的shell git并使用新版本!

  • 我正在使用一个新的Xcode安装(git是版本1.8.5.2),我一直有这个错误,直到我跑:`git config --global push.default simple` (13认同)