Warnung: push.default ist nicht gesetzt; Sein impliziter Wert ändert sich in Git 2.0

1623

Ich benutze Git jetzt schon eine Weile und habe kürzlich ein Update heruntergeladen, nur um diese Warnmeldung zu finden, wenn ich es versuche 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

Ich kann es natürlich auf einen der genannten Werte einstellen, aber was bedeuten sie? Was ist der Unterschied zwischen simpleund matching?

Wenn ich es auf einem Client ändere, muss ich dann etwas auf anderen Clients tun, mit denen ich Repos teile?

Marko
quelle
1
Hinweis: Git 2.8 (März 2016) entfernt diese Warnung! Siehe stackoverflow.com/a/22356644/6309
VonC

Antworten:

2148

Es wird in den Dokumenten ausführlich erklärt , aber ich werde versuchen, es zusammenzufassen:

  • matchingbedeutet git push, dass alle Ihre lokalen Niederlassungen zu den gleichnamigen auf der Fernbedienung weitergeleitet werden. Dies macht es einfach, versehentlich einen Zweig zu verschieben, den Sie nicht beabsichtigt haben.

  • simplebedeutet git push, dass nur der aktuelle Zweig zu dem Zweig git pullverschoben wird, von dem gezogen wird , und dass auch überprüft wird, ob ihre Namen übereinstimmen. Dies ist ein intuitiveres Verhalten, weshalb die Standardeinstellung geändert wird.

Diese Einstellung wirkt sich nur auf das Verhalten Ihres lokalen Clients aus und kann überschrieben werden, indem explizit angegeben wird, welche Zweige Sie in der Befehlszeile verschieben möchten. Andere Clients können andere Einstellungen haben. Dies wirkt sich nur darauf aus, was passiert, wenn Sie nicht angeben, welche Zweige Sie verschieben möchten .

Hammar
quelle
16
Freut mich, diese Änderung zu kennen. Als ich neu bei git war, habe ich versehentlich alle lokalen Filialen gepusht und gedacht git push, dass nur die aktuelle Filiale gepusht wird.
Rahul286
51
Das Motiv ist, dass empirisch die meisten das neue Standardverhalten erwarten
Blake Miller
125
Es wäre viel besser, Ihre wunderbar klare Zusammenfassung in der Warnmeldung selbst zu haben, als die Anweisung, die Dokumentation zu öffnen und nach einer Zeichenfolge zu suchen.
Hertzsprung
116
"Es wird sehr deutlich in den Dokumenten erklärt." Sicher ist es, wenn Sie auf der richtigen Seite landen, aber das Handbuch für Git Push erwähnt nicht einmal das Wort einfach , was wahrscheinlich ist, wer so viele Leute stattdessen hier gelandet sind .
Gerry
36
Die Zusammenfassung von Hammar ist eine viel präzisere Erklärung als die Git-Dokumente.
AJ.
19

Mir ist klar, dass dies ein alter Beitrag ist, aber da ich gerade auf dasselbe Problem gestoßen bin und Probleme hatte, die Antwort zu finden, dachte ich, ich würde ein bisschen hinzufügen.

Die Antwort von @ hammar ist also richtig. Die Verwendung entspricht push.default simplein gewisser Weise der Konfiguration des Trackings für Ihre Zweige, sodass Sie beim Drücken und Ziehen keine Fernbedienungen und Zweige angeben müssen. Mit dieser matchingOption werden alle Zweige an die entsprechenden Gegenstücke auf der Standardfernbedienung weitergeleitet (dies ist die erste, die eingerichtet wurde, sofern Sie Ihr Repo nicht anders konfiguriert haben).

Ich hoffe, andere finden es in Zukunft nützlich, dass ich Git 1.8 unter OS X Mountain Lion ausgeführt habe und diesen Fehler nie gesehen habe. Ein Upgrade auf Mavericks hat es plötzlich angezeigt (das Ausführen git --versionzeigt, git version 1.8.3.4 (Apple Git-47)was ich bis zum Update des Betriebssystems noch nie gesehen habe.

wgp
quelle
2
Ich habe dies auch nach dem Upgrade auf Mavericks gesehen. Ich denke, Git wurde zur gleichen Zeit wie Mavericks aktualisiert, wie Sie meinen.
Per Lundberg
8

Wenn Sie eine Nachricht von git erhalten, die sich über den Wert simplein der Konfiguration beschwert , überprüfen Sie Ihre git version.

Nach dem Upgrade XCode(bei einem Maclaufenden Mountain Lion), das ebenfalls gitvon 1.7.4.4 auf 1.8.3.4 aktualisiert wurde , wurden Shells gestartet, bevor das Upgrade noch Git 1.7.4.4 ausführte, und beschwerten sich über den Wert simplefür push.default in der globalen Konfiguration.

Die Lösung bestand darin, die Shells zu schließen, auf denen die alte Version von ausgeführt wurde, gitund die neue Version zu verwenden!

Tom Barron
quelle
13
Ich verwende eine neue Xcode-Installation (Git ist Version 1.8.5.2) und ich hatte immer noch diesen Fehler, bis ich lief:git config --global push.default simple
Sam-Graham
2

Ich habe mich gefragt, warum ich diese große Warnmeldung unter Ubuntu 16.04 (das mit Git 2.7.4 geliefert wird) erhalten habe, aber nicht unter Arch Linux. Der Grund ist, dass die Warnung in Git 2.8 (März 2016) entfernt wurde:

Während des Übergangs um Git Version 2.0 erhielt der Benutzer eine ziemlich laute Warnung, wenn er "git push" ausführte, ohne die Konfigurationsvariable push.default festzulegen. Wir warnen nicht mehr, weil der Übergang vor langer Zeit abgeschlossen wurde.

Sie werden die Warnung also nicht sehen, wenn Sie Git 2.8 und höher haben und nicht einstellen müssen, es push.defaultsei denn, Sie möchten das Standardverhalten ändern 'simple'.

Eugene Yarmash
quelle