警告:push.default 未设置;它的隐式值在 Git 2.0 中正在更改

我已经使用 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

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

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

答案

文档中对此进行了详细说明,但我将尝试总结一下:

  • matching意味着git push将把所有本地分支推送到远程上具有相同名称的分支 。这使得意外推入您不想要的分支变得容易。

  • simple意味着git push仅将当前分支推送到git pull pull 从中git pull分支 ,并检查其名称是否匹配。这是一种更直观的行为,这就是为什么将默认设置更改为此的原因。

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

我意识到这是一篇过时的文章,但是由于我遇到了同样的问题,却找不到答案,以为我会补充一点。

因此,@ 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 收到消息,抱怨配置中的simple值,请检查git version

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

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

我想知道为什么我在 Ubuntu 16.04(Git 2.7.4 附带)上却收到了这么大的警告消息,而在 Arch Linux 上却没有。原因是该警告已在Git 2.8 (2016 年 3 月)中删除:

在 Git 2.0 左右的整个过渡过程中,用户过去在运行 “git push” 时未设置 push.default 配置变量时都会收到很大的警告。我们不再发出警告,因为过渡是很久以前完成的。

因此,如果您拥有 Git 2.8 及更高版本,并且无需设置push.default ,就不会看到警告,除非您想要更改默认的'simple'行为。