Ich habe an meinem lokalen Feature-Zweig gearbeitet, foo. Dann wollte ich diesen neuen Zweig zum Ursprung bringen, damit andere daran arbeiten konnten. Der normale Weg dazu ist:
%Vor%Was ich schließlich tat, und es funktionierte wie erwartet, indem ich 61 Objekte hochdrückte. Bevor ich das getan habe, habe ich aus einer Laune heraus versucht:
%Vor%Ich denke, dass es normalerweise einen neuen entfernten Zweig basierend auf dem Namen meiner lokalen Niederlassung erstellen würde. Die Ausgabe war normale Push-Ausgabe, mit nur 13 Objekten nach oben geschoben. Die Ergebnisse waren nicht nachvollziehbar. Nichts Neues kam nach einem Fetch für die anderen Entwickler oder in meinem lokalen Repo.
Was denkt git dann, wenn ich git push origin
mache, und was für einen Effekt hatte es auf meinem Remote-Repo?
Es kommt auf deine Git-Version an. In der alten Version würde es versuchen, jede lokale Branche, die auch auf der anderen Seite ist, zu drücken. Seit Version 1.6.3 wird das Verhalten von der Konfigurationsoption push.default
gesteuert.
Die Werte sind:
matching
: [ der Standard ] drückt alle Zweige mit demselben lokalen und entfernten Namen nothing
: Push nichts tracking
: Verschiebt den aktuellen Zweig nur, wenn er einen entfernten Zweig verfolgt current
: drückt den aktuellen Zweig Juni 2012: [ANNOUNCE] Git 1.7.11.rc1
Ein neuer Modus für
push
, "simple
" , was eine Kreuzung zwischen "current
" und "upstream
" ist eingeführt.
"git push
" ohne refspec wird den aktuellen Zweig nur dann auf den gleichen Namen im Remote-Repository verschieben, wenn dort der Zweig mit demselben Namen nachverfolgt wird.
Es ist geplant, diesen Modus zum neuen Standardwert zu machen, wenn push.default nicht konfiguriert ist.
März 2012: Vorsicht: Die standardmäßige "übereinstimmende" Richtlinie könnte sich bald ändern (irgendwann nach Git1.7.10 +) :
Siehe " Bitte besprechen Sie: was" git push "sollte tun, wenn Sie nicht sagen, was Sie schieben sollen? "
In der aktuellen Einstellung (
push.default=matching
) wirdgit push
ohne Argument alle Zweige verschieben, die lokal und remote mit demselben Namen existieren .
Dies ist normalerweise angemessen, wenn ein Entwickler in sein eigenes öffentliches Repository schiebt, aber möglicherweise verwirrend, wenn nicht gefährlich, wenn ein gemeinsam genutztes Repository verwendet wird.Der Vorschlag ist, den Standardwert in '
upstream
' zu ändern, d. h. nur den aktuellen Zweig zu verschieben und ihn auf den Zweig zu schieben, von dem git pull ausgeht.
Ein anderer Kandidat ist 'current
'; Dadurch wird nur der aktuelle Zweig in den entfernten Zweig desselben Namens verschoben.Was bisher besprochen wurde, kann in diesem Thread gesehen werden:
Zu früheren relevanten Diskussionen gehören:
Um an der Diskussion teilzunehmen, senden Sie Ihre Nachrichten an: [email protected]
Tags und Links git