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

Warning: push.default is unset; its implicit value is changing in Git 2.0

我一直在使用Git一段时间,最近只下载了一个更新,当我尝试push时发现这个警告信息。

1
2
3
4
5
6
7
8
9
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将从中拉出的分支,并检查其名称是否匹配。这是一种更直观的行为,这就是默认情况发生变化的原因。

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


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

所以@ 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(在Mac运行Mountain Lion上),也将git从1.7.4.4升级到1.8.3.4后,在升级之前启动的shell仍在运行git 1.7.4.4并抱怨值< x2>用于全局配置中的push.default。

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


我想知道为什么我在Ubuntu 16.04(Git 2.7.4附带)上收到了那个大警告信息,但是在Arch Linux上没有。原因是在Git 2。8(2016年3月)中删除了警告:

Across the transition at around Git version 2.0, the user used to
get a pretty loud warning when running"git push" without setting
push.default configuration variable. We no longer warn because the
transition was completed a long time ago.

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