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

Lesezeit: 7 Minuten

Warnung pushdefault ist nicht gesetzt sein impliziter Wert andert sich
Markus

Ich benutze Git schon seit einiger Zeit und habe kürzlich ein Update heruntergeladen, nur um festzustellen, dass diese Warnmeldung angezeigt wird, 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 setzen, aber was bedeuten sie? Was ist der Unterschied zwischen simple und matching?

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

  • stackoverflow.com/questions/948354/git-push-current-branch

    – gliptak

    19. Oktober 2013 um 18:13 Uhr

  • stackoverflow.com/a/948397/1841194

    – Frosch

    23. Dezember 2015 um 20:27 Uhr

  • Hinweis: git 2.8 (März 2016) wird diese Warnung entfernen! Siehe stackoverflow.com/a/22356644/6309

    – VonC

    27. Februar 2016 um 19:03 Uhr

1646633890 822 Warnung pushdefault ist nicht gesetzt sein impliziter Wert andert sich
Hammar

Es ist ausführlich erklärt in die Dokumenteaber ich versuche mal zusammenzufassen:

  • matching bedeutet git push Wille pushen Sie alle Ihre lokalen Niederlassungen zu denen mit dem gleichen Namen auf der Fernbedienung. Dies macht es einfach, versehentlich einen Ast zu drücken, den Sie nicht beabsichtigt haben.

  • simple bedeutet git push Wille schieben Sie nur den aktuellen Zweig auf denjenigen, der git pull abziehen würde, und überprüft auch, ob ihre Namen übereinstimmen. Dies ist ein intuitiveres Verhalten, weshalb die Standardeinstellung so geändert wird.

Diese Einstellung wirkt sich nur auf das Verhalten Ihres lokalen Clients aus und kann außer Kraft gesetzt werden, indem Sie explizit angeben, welche Branches Sie in der Befehlszeile pushen möchten. Andere Clients können andere Einstellungen haben, es wirkt sich nur darauf aus, was passiert, wenn Sie nicht angeben, welche Zweige Sie pushen möchten.

  • Ich bin froh, diese Änderung zu kennen. Als ich neu bei Git war, habe ich aus Versehen alle lokalen Niederlassungen zum Nachdenken gebracht git push wird nur den aktuellen Zweig pushen.

    – rahul286

    28. Februar 2013 um 14:46 Uhr

  • Das Motiv ist, dass empirisch die meisten das neue Ausfallverhalten erwarten

    – Blake Miller

    15. Juni 2013 um 18:53 Uhr

  • Es wäre so viel besser, Ihre wunderbar klare Zusammenfassung in der Warnmeldung selbst zu haben, als die Anweisung, dass wir die Dokumentation öffnen und nach einer Zeichenfolge suchen sollen.

    – hertzsprung

    4. August 2013 um 17:18 Uhr

  • “Es ist sehr klar in den Dokumenten erklärt” Sicher ist es, wenn Sie auf der richtigen Seite landen, jedoch das Handbuch für git push hat nicht einmal eine Erwähnung des Wortes einfach das ist wahrscheinlich der, der so viele Leute stattdessen hierher geführt hat.

    – Gerry

    30. Oktober 2013 um 3:43 Uhr


  • Hammars Zusammenfassung ist eine viel prägnantere Erklärung als die Git-Dokumentation.

    – AJ.

    2. Januar 2014 um 16:01 Uhr

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 wenig hinzufügen.

Die Antwort von @hammar ist also richtig. Verwenden push.default simple ist in gewisser Weise wie das Konfigurieren von Tracking für Ihre Branches, sodass Sie beim Pushen und Pullen keine Remotes und Branches angeben müssen. Die matching -Option pusht alle Zweige zu ihren entsprechenden Gegenstücken auf der Standardfernbedienung (die als erste eingerichtet wurde, es sei denn, Sie haben Ihr Repo anders konfiguriert).

Eine Sache, von der ich hoffe, dass andere sie in Zukunft nützlich finden, ist, dass ich Git 1.8 auf OS X Mountain Lion ausgeführt habe und diesen Fehler nie gesehen habe. Durch das Upgrade auf Mavericks wurde es plötzlich angezeigt (running git --version wird zeigen git version 1.8.3.4 (Apple Git-47) die ich bis zum Update des Betriebssystems noch nie gesehen hatte.

  • Ich habe das auch nach dem Upgrade auf Mavericks gesehen. Ich denke also, Git wurde zur gleichen Zeit wie Mavericks aktualisiert, wie Sie andeuten.

    – Per Lundberg

    1. November 2013 um 7:52 Uhr

Warnung pushdefault ist nicht gesetzt sein impliziter Wert andert sich
Tom Baron

Wenn Sie eine Meldung von git erhalten, die sich über den Wert ‘simple’ in der Konfiguration beschwert, überprüfen Sie Ihre git-Version.

Nach dem Upgrade von Xcode (auf einem Mac mit Mountain Lion), der auch Git von 1.7.4.4 auf 1.8.3.4 aktualisierte, starteten Shells vor dem Upgrade noch mit Git 1.7.4.4 und beschwerten sich über den Wert „simple“ für push.default in die globale Konfig.

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

  • Ich verwende eine neue Xcode-Installation (Git ist Version 1.8.5.2) und hatte immer noch diesen Fehler, bis ich Folgendes ausführte: git config --global push.default simple

    – Sam-Graham

    14. Mai 2014 um 18:36 Uhr


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

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

Sie sehen die Warnung also nicht, wenn Sie Git 2.8 und höher haben und keine Einstellung vornehmen müssen push.default es sei denn, Sie möchten die Standardeinstellung ändern 'simple' Verhalten.

Habe meine Antwort aus einem anderen Thread mitgebracht, der möglicherweise als Duplikat geschlossen wird …

Aus der GIT-Dokumentation: Git-Dokumente

Nachfolgend finden Sie die vollständigen Informationen. Zusamenfassend, simple wird nur die schieben current working branch und auch nur dann, wenn es auf der fernbedienung auch den gleichen namen hat. Dies ist eine sehr gute Einstellung für Anfänger und wird zur Standardeinstellung GIT 2.0

Wohingegen matching wird schieben alle lokale Zweige, die auf der Gegenstelle den gleichen Namen haben. (Ohne Rücksicht auf Ihren aktuellen Arbeitszweig). Dies bedeutet, dass möglicherweise viele verschiedene Zweige gepusht werden, einschließlich derjenigen, die Sie möglicherweise nicht einmal teilen möchten.

In meinem persönlichen Gebrauch verwende ich im Allgemeinen eine andere Option: current was den aktuellen Arbeitszweig pusht (weil ich immer für Änderungen verzweige). Aber für einen Anfänger würde ich vorschlagen simple

push.default
Definiert die Aktion, die git push ausführen soll, wenn keine Refspec explizit angegeben wird. Unterschiedliche Werte eignen sich gut für bestimmte Arbeitsabläufe; In einem rein zentralen Workflow (dh die Abrufquelle ist gleich dem Push-Ziel) ist Upstream wahrscheinlich das, was Sie wollen. Mögliche Werte sind:

nichts – schiebt nichts (Fehler aus), es sei denn, es wird explizit eine Refspec angegeben. Dies ist in erster Linie für Leute gedacht, die Fehler vermeiden wollen, indem sie immer explizit sind.

current – Pushen Sie den aktuellen Zweig, um einen Zweig mit demselben Namen auf der Empfängerseite zu aktualisieren. Funktioniert sowohl in zentralen als auch in dezentralen Workflows.

upstream – schiebt den aktuellen Zweig zurück zu dem Zweig, dessen Änderungen normalerweise in den aktuellen Zweig integriert werden (der @{upstream} genannt wird). Dieser Modus ist nur sinnvoll, wenn Sie in dasselbe Repository pushen, aus dem Sie normalerweise ziehen würden (dh zentraler Workflow).

Einfach – Arbeiten Sie im zentralisierten Workflow wie Upstream mit einer zusätzlichen Sicherheit, um das Pushen zu verweigern, wenn sich der Name der Upstream-Niederlassung von dem lokalen unterscheidet.

Wenn Sie auf eine Fernbedienung drücken, die sich von der Fernbedienung unterscheidet, von der Sie normalerweise ziehen, arbeiten Sie als aktuell. Dies ist die sicherste Option und eignet sich für Anfänger.

Dieser Modus wird in Git 2.0 zum Standard.

matching – pushe alle Zweige mit dem gleichen Namen an beiden Enden. Dadurch erinnert sich das Repository, das Sie pushen, an den Satz von Branches, die herausgeschoben werden (z. B. wenn Sie immer maint und master dorthin und keine anderen Branches pushen, hat das Repository, in das Sie pushen, diese beiden Branches und Ihren lokalen maint und master wird dorthin geschoben).

Um diesen Modus effektiv zu nutzen, müssen Sie sicherstellen, dass alle Branches, die Sie pushen würden, fertig sind, bevor Sie git push ausführen, da der ganze Sinn dieses Modus darin besteht, Ihnen zu ermöglichen, alle Branches auf einmal zu pushen. Wenn Sie die Arbeit normalerweise nur an einem Zweig beenden und das Ergebnis veröffentlichen, während andere Zweige unvollendet sind, ist dieser Modus nichts für Sie. Außerdem ist dieser Modus nicht geeignet, um in ein gemeinsam genutztes zentrales Repository zu pushen, da andere Personen dort neue Zweige hinzufügen oder die Spitze bestehender Zweige außerhalb Ihrer Kontrolle aktualisieren können.

Dies ist derzeit die Standardeinstellung, aber Git 2.0 ändert die Standardeinstellung in „einfach“.

963510cookie-checkWarnung: push.default ist nicht gesetzt; sein impliziter Wert ändert sich in Git 2.0

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy