70

当我在 Git 中推送到远程时,我收到以下警告:

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

See 'git help config' and search for 'push.default' for further information.
(the 'simple' mode was introduced in Git 1.7.11. Use the similar mode
'current' instead of 'simple' if you sometimes use older versions of Git)

To **********************************
   6b9a6d2..3ab1eab  master -> master

这个警告是什么意思,应该怎么做?

4

4 回答 4

93

Git 1.7.11 中引入了此警告以及simple推送样式。问题是当前默认值 ,matching可能会导致没有经验的用户在某些分支落后于其远程等效分支时强制推送,因为这些分支根本不是最新的。最终结果是他们最终会倒带分支并可能失去他们或其他人的工作。该simple模式是作为一种新模式引入的push.default行为引入的,并将成为 Git 2.0 中的默认设置(有望在明年初的某个时候推出)。

simple行为很像upstream设置:它只推送你当前所在的当前分支,如果它有一个正在跟踪的远程分支。它增加了一个额外的条件:远程分支必须与本地分支同名。

正如您所发现的,摆脱消息的方法是设置push.default. 要获得新行为,请使用:

git config --global push.default simple

要获得 Git 的默认行为但没有警告消息,请使用:

git config --global push.default matching

我真的建议不要使用匹配。一般来说,大多数人真的想要新的simple行为,或者upstream

于 2013-11-01T08:47:32.610 回答
11

2016 年 2 月更新

git 2.8(2016 年 3 月)删除了那个大警告信息

请参阅Matthieu Moy ( )的提交 2f27520(2016 年 2 月 25 日) 。(由Junio C Hamano 合并——提交 15be621中,2016 年 2 月 26 日)moy
gitster

push: 删除 " push.default is unset" 警告信息

该警告在 2.0 过渡之前很重要,并且在之后的一段时间内仍然很重要,这样新用户就可以push.default明确地了解他们的配置,并且如果他们曾经使用过旧版本的 Git,也不会遇到不一致的行为。

该警告自 1.8.0 版(2012 年 10 月)以来一直存在,因此我们可以预期绝大多数当前 Git 用户已经接触过它,并且其中大多数已经push.default明确设置。从“匹配”到“简单”的转换计划在 2.0(2014 年 5 月)中进行,但实际上只发生在 2.3(2015 年 2 月)中。

今天,警告主要由尚未设置 push.default配置的初学者看到。对于他们中的许多人来说,这个警告令人困惑,因为它谈到了他们还没有学过的概念,并要求他们做出一个他们还不能做出的选择。参见例如“警告:push.default 未设置;它的隐含值在 Git 2.0 中正在发生变化”(1260 票赞成这个问题,1824 票赞成写作时的答案)

完全删除警告以避免打扰初学者。仍然偶尔使用旧版本 Git 的人将通过这个旧版本受到警告。

最终,没有警告的 Git 版本将被充分部署,教程将不再需要建议设置push.default


原始答案(2014 年 3 月)

该警告将很快在 git 2.0(2014 年第二季度)中更改,提交 289ca27提交 11037ee

push.default 未设置;它的隐含值在 Git 2.0 中从“匹配”变为“简单”
要压制此消息并保持传统行为,请使用:

git config --global push.default matching

要立即消除此消息并采用新行为,请使用:

git config --global push.default simple

push.default设置为 ' matching' 时,git 会将本地分支推送到已经存在的同名远程分支。

从 Git 2.0 开始,Git 默认采用更保守的 ' simple' ' 行为,它只将当前分支推送到 ' git pull' 用来更新当前分支的对应远程分支。

在“为什么要推送以匹配 Git 中的默认值? ”中查看更多信息。

于 2014-03-12T15:44:08.350 回答
1

我通过为它提供远程存储库名称和远程分支名称(已被跟踪)来解决它。

就我而言,在 github

$ git push origin main

于 2021-07-17T16:39:15.473 回答
0

不久前我遇到了同样的问题。我解决了这个问题,

  • 首先克隆我的新分支(UAT)
  • 然后推到那个分支(UAT)
于 2016-06-07T16:22:16.117 回答