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


1623

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

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

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




1
注意:git 2.8(2016年3月)将删除该警告!参见stackoverflow.com/a/22356644/6309
VonC

Answers:


2148

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

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

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

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


16
很高兴知道这一变化。当我刚接触git时,我不小心推了所有本地分支,以为git push只会推当前分支。
rahul286

51
动机是,根据经验,大多数人期望新的默认行为
Blake Miller

125
在警告消息中包含非常清晰的摘要会比告诉我们打开文档并搜索字符串的说明好得多。
2013年

116
“在文档中对此进行了非常清楚的解释”当然可以,如果您在正确的页面上找到了它,但是git push手册甚至没有提到simple,这可能是这么多人最终在这里代替的。
格里

36
hammar的摘要比git docs更简洁。
AJ。

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)直到更新操作系统之前从未见过的运行情况。


2
升级到Mavericks后,我也开始看到这种情况。因此,我想就像您暗示的那样,Git与Mavericks同时升级了。
Per Lundberg

8

如果您收到git抱怨simple配置值错误的消息,请检查您的git version

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

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


13
我正在使用全新的Xcode安装(git版本为1.8.5.2),在运行之前,我仍然遇到此错误:git config --global push.default simple
Sam-Graham

2

我想知道为什么我在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'行为,否则无需进行设置就不会看到警告。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.