Git警告:push.default未设置;它的隐含价值在变化

时间:2013-11-01 04:17:40

标签: git push

当我在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 个答案:

答案 0 :(得分:74)

这个警告是在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

答案 1 :(得分:7)

2016年2月更新

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

commit 2f27520Matthieu Moy (moy)(2016年2月25日) (由Junio C Hamano -- gitster --合并于commit 15be621,2016年2月26日)

  

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配置(尚未)。对于他们中的许多人来说,警告是   令人困惑,因为它谈论的是他们没有学到的概念   问他们一个他们无法做出的选择。例如,参见“Warning: push.default is unset; its implicit value is changing in Git 2.0”(该问题为1260票,写作时答案为1824)

     

完全删除警告以避免打扰初学者。那些人   仍偶尔使用旧版本的Git会暴露出来   通过这个旧版本发出警告。

     

最终,没有警告的Git版本将得到足够的部署   和教程不再需要建议设置push.default


原始答案(2014年3月)

警告将很快在git 2.0(2014年第二季度)中发生变化,commit 289ca27commit 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”使用的相应远程分支更新当前分支。

点击“Why is pushing to matching the default in Git?”了解更多信息。

答案 2 :(得分:0)

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

  • 首先克隆我的新分支(UAT)
  • 然后推进那个分支(UAT)

答案 3 :(得分:0)

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

就我而言,在 github 中

$ git push origin main