题 警告: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

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

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


1575
2017-10-30 21:48


起源


stackoverflow.com/questions/948354/git-push-current-branch - gliptak
stackoverflow.com/a/948397/1841194 - Hi I'm Frogatto
注意:git 2。8(2016年3月)将删除该警告!看到 stackoverflow.com/a/22356644/6309 - VonC


答案:


它的详细解释如下 文档,但我会试着总结一下:

  • matching 手段 git push 将 推动所有本地分支机构 到遥控器上具有相同名称的那些。这样可以很容易地意外地推动您不想要的分支。

  • simple 手段 git push 将 只将当前分支推送到那个分支 git pull 会拉扯出来的,并检查他们的名字是否匹配。这是一种更直观的行为,这就是默认情况发生变化的原因。

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


2120
2017-10-30 22:11



很高兴知道这个变化。当我是git的新手时,我不小心推动了所有当地分支机构的思考 git push 将仅推送当前分支。 - rahul286
动机是,根据经验,大多数人都期望新的默认行为 - Blake Miller
在警告消息本身中获得非常清晰的摘要会更好,而不是告诉我们打开文档并搜索字符串的指令。 - hertzsprung
“它在文档中非常清楚地解释了” 当然,如果你最终出现在正确的页面上,不过是手册 git push 甚至没有提到这个词 简单 ,这可能是很多人最终来到这里的。 - Gerry
hammar的摘要比git docs更简洁。 - AJ.


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

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

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


19
2017-10-26 17:00



升级到小牛队后我也开始看到这个。所以我猜Git与小牛同时升级,就像你暗示的那样。 - Per Lundberg


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

升级后 XCode (在...上 Mac 赛跑 Mountain Lion),也升级了 git 从 1.7.4.4 至 1.8.3.4,在升级之前启动的shell仍在运行git 1.7.4.4 并抱怨价值 simple 对于全局配置中的push.default。

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


7
2018-01-31 15:35



我正在使用一个新的Xcode安装(git是版本1.8.5.2),我仍然有这个错误,直到我运行: git config --global push.default simple - Sam-Graham


我想知道为什么我在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' 行为。


1
2018-03-19 13:10