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

1624

J'utilise Git depuis un certain temps maintenant et j'ai récemment téléchargé une mise à jour uniquement pour trouver ce message d'avertissement lorsque j'essaie 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

Je peux évidemment le définir sur l'une des valeurs mentionnées, mais que signifient-elles? Quelle est la différence entre simpleet matching?

Si je le modifie sur un client, dois-je faire quelque chose sur les autres clients avec lesquels je partage des référentiels?

Marko
la source
1
Remarque: git 2.8 (mars 2016) supprimera cet avertissement! Voir stackoverflow.com/a/22356644/6309
VonC

Réponses:

2149

C'est expliqué en détail dans la documentation , mais je vais essayer de résumer:

  • matchingsignifie que toutes vos succursales localesgit push seront poussées vers celles portant le même nom sur la télécommande. Il est ainsi facile de pousser accidentellement une branche que vous ne vouliez pas.

  • simpledes moyens git pushvont pousser que la branche actuelle à celle qui git pullserait tirer de , et vérifie également que leurs noms correspondent. Il s'agit d'un comportement plus intuitif, c'est pourquoi la valeur par défaut est modifiée.

Ce paramètre affecte uniquement le comportement de votre client local et peut être remplacé en spécifiant explicitement les branches que vous souhaitez pousser sur la ligne de commande. D'autres clients peuvent avoir des paramètres différents, cela n'affecte que ce qui se passe lorsque vous ne spécifiez pas les branches que vous souhaitez pousser .

hammar
la source
16
Heureux de connaître ce changement. Quand j'étais nouveau sur git, j'ai accidentellement poussé toutes les branches locales en pensant git pushne pousser que la branche actuelle.
rahul286
51
Le motif est que, empiriquement, la plupart s'attendent au nouveau comportement par défaut
Blake Miller
125
Il serait tellement préférable d'avoir votre résumé merveilleusement clair dans le message d'avertissement lui-même, plutôt que les instructions nous disant d'ouvrir la documentation et de rechercher une chaîne.
hertzsprung
116
"C'est expliqué très clairement dans les documents" Bien sûr, si vous vous retrouvez sur la bonne page, cependant le manuel de git push ne mentionne même pas le mot simple , qui est probablement qui tant de gens se sont retrouvés ici à la place .
Gerry
36
Le résumé de hammar est une explication beaucoup plus concise que les documents git.
AJ.
19

Je me rends compte que c'est un vieux post, mais comme je viens de rencontrer le même problème et que j'ai eu du mal à trouver la réponse, j'ai pensé ajouter un peu.

La réponse de @ hammar est donc correcte. L'utilisation push.default simpleest, d'une certaine manière, comme la configuration du suivi sur vos branches afin que vous n'ayez pas besoin de spécifier des télécommandes et des branches lorsque vous poussez et tirez. L' matchingoption poussera toutes les branches vers leurs homologues correspondantes sur la télécommande par défaut (qui est la première qui a été configurée sauf si vous avez configuré votre référentiel autrement).

Une chose que j'espère que d'autres trouveront utile à l'avenir est que j'utilisais Git 1.8 sur OS X Mountain Lion et que je n'ai jamais vu cette erreur. La mise à niveau vers Mavericks est ce qui l'a soudainement fait apparaître (l'exécution git --versionmontrera git version 1.8.3.4 (Apple Git-47)ce que je n'avais jamais vu jusqu'à la mise à jour du système d'exploitation.

wgp
la source
2
J'ai également commencé à voir cela après la mise à niveau vers Mavericks. Je suppose donc que Git a été mis à niveau en même temps que Mavericks, comme vous le laissez entendre.
Per Lundberg
8

Si vous recevez un message de git se plaignant de la valeur simplede la configuration, vérifiez votre git version.

Après la mise à niveau XCode(en Maccours d'exécution Mountain Lion), qui est également passée gitde 1.7.4.4 à 1.8.3.4 , les shells ont démarré avant que la mise à niveau ne soit toujours en cours d'exécution avec git 1.7.4.4 et se sont plaints de la valeur simplede push.default dans la configuration globale.

La solution était de fermer les shells exécutant l'ancienne version de gitet d'utiliser la nouvelle version!

Tom Barron
la source
13
J'utilise une nouvelle installation de Xcode (git est la version 1.8.5.2) et j'avais toujours cette erreur jusqu'à ce que je lance:git config --global push.default simple
Sam-Graham
2

Je me demandais pourquoi je recevais ce gros message d'avertissement sur Ubuntu 16.04 (qui vient avec Git 2.7.4), mais pas sur Arch Linux. La raison en est que l'avertissement a été supprimé dans Git 2.8 (mars 2016):

À travers la transition autour de Git version 2.0, l'utilisateur obtenait un avertissement assez fort lors de l'exécution de "git push" sans définir la variable de configuration push.default. On ne prévient plus car la transition s'est terminée il y a longtemps.

Ainsi, vous ne verrez pas l'avertissement si vous avez Git 2.8 et versions ultérieures et que vous n'avez pas besoin de le définir, push.defaultsauf si vous souhaitez modifier le 'simple'comportement par défaut .

Eugene Yarmash
la source