web-dev-qa-db-fra.com

Avertissement Git: Push.default n'est pas défini; sa valeur implicite change

Lorsque j'appuie sur Git, j'obtiens l'avertissement suivant:

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

Que signifie cet avertissement et que faut-il faire à ce sujet?

47
JackSun

Cet avertissement a été introduit dans Git 1.7.11 avec le style de poussée simple. Le problème est que la valeur par défaut actuelle, matching, peut amener les utilisateurs inexpérimentés à forcer le transfert lorsque certaines branches se trouvent derrière leur équivalent distant, car elles ne sont tout simplement pas à jour. Le résultat final est qu’ils finissent par rembobiner la branche et risquent de perdre leur travail ou celui de quelqu'un d’autre. Le mode simple a été introduit en tant que nouveau comportement Push.default et deviendra le comportement par défaut dans Git 2.0 (qui devrait être disponible au début de l’année prochaine).

Le nouveau comportement simple ressemble beaucoup au paramètre upstream: il ne fait que pousser la branche actuelle sur laquelle vous êtes actuellement, si elle a une branche distante suivie. Il ajoute un critère supplémentaire: la branche distante doit avoir le même nom que la branche locale.

Comme vous l'avez découvert, le moyen de supprimer le message consiste à définir Push.default. Pour obtenir le nouveau comportement, utilisez:

git config --global Push.default simple

Pour obtenir le comportement par défaut de Git mais sans le message d'avertissement, utilisez:

git config --global Push.default matching

Je conseillerais vraiment contre en utilisant l'appariement si. En général, la plupart des gens veulent vraiment le nouveau comportement simple ou upstream.

71
John Szakmeister

Mise à jour février 2016:

git 2.8 (mars 2016) a supprimé ce gros message d'avertissement.

Voir commit 2f27520 (25 février 2016) de Matthieu Moy (moy) .
(Fusion par Junio ​​C Hamano - gitster - in commit 15be621 , 26 février 2016)

Push: supprimer le message d'avertissement "Push.default is unset"

L’avertissement était important avant la transition 2.0 et pendant un certain temps après, afin que les nouveaux utilisateurs reçoivent explicitement Push.default dans leur configuration et ne subissent pas de comportement incohérent s’ils utilisaient une version plus ancienne de Git.

L'avertissement existe depuis la version 1.8.0 (octobre 2012), nous pouvons donc s’attendre à ce que la grande majorité des utilisateurs actuels de Git aient été exposés à et la plupart d’entre eux ont déjà défini explicitement Push.default. Le le passage de 'matching' à 'simple' était prévu pour la version 2.0 (mai 2014), mais réellement eu lieu que pour 2.3 (février 2015).

Aujourd'hui, l'avertissement est surtout vu par les débutants, qui n'ont pas encore défini leur Push.default configuration (encore). Pour beaucoup d'entre eux, l'avertissement est déroutant car il parle de concepts qu’ils n’ont pas appris et leur demande un choix qu'ils ne sont pas encore en mesure de faire. Voir par exemple " Attention: Push.default est non défini; sa valeur implicite change dans Git 2.0 " (1260 votes pour la question, 1824 pour la réponse au moment de l'écriture).

Supprimez complètement l'avertissement pour ne pas déranger les débutants. Les gens qui utilisez encore occasionnellement une version plus ancienne de Git sera exposé au avertissement à travers cette ancienne version.

Finalement, les versions de Git sans avertissement seront suffisamment déployées et les tutoriels n'auront plus besoin de conseiller de régler Push.default.


Réponse originale (mars 2014)

Cet avertissement va bientôt changer dans git 2.0 (T2 2014), avec commit 289ca27 et commit 11037ee :

Push.default n'est pas défini; sa valeur implicite a changé dans Git 2.0 de 'correspondance' à 'simple'.
Pour supprimer ce message et conserver le comportement traditional, utilisez:

git config --global Push.default matching

Pour supprimer ce message et adopter le nouveau comportement maintenant, utilisez:

git config --global Push.default simple

Lorsque Push.default est défini sur 'matching', git va pousser les branches locales aux branches distantes qui existent déjà avec le même nom.

Depuis Git 2.0, Git utilise par défaut le comportement plus prudent "simple" ", qui pousse uniquement la branche actuelle vers la branche distante correspondante que" git pull "utilise pour mettre à jour la branche actuelle.

Voir plus à " Pourquoi pousser à faire correspondre la valeur par défaut dans Git? ".

7
VonC

J'ai rencontré le même problème il y a peu de temps. J'ai résolu ça par,

  • premier clonage de ma nouvelle branche (UAT)
  • puis en poussant vers cette branche (UAT)
0