Ich verwende den folgenden Befehl, um zu meinem Remote-Zweig zu pushen:
git push origin sandbox
Wenn ich sage
git push origin
Verschiebt dies auch Änderungen in meinen anderen Zweigen oder aktualisiert es nur meinen aktuellen Zweig? Ich habe drei Zweige: master
, production
und sandbox
.
Die git push
Dokumentation ist darüber nicht sehr klar, daher möchte ich dies für immer klarstellen.
Welche Zweige und Fernbedienungen git push
aktualisieren die folgenden Befehle genau?
git push
git push origin
origin
oben ist eine Fernbedienung.
Ich verstehe, dass git push [remote] [branch]
nur dieser Zweig auf die Fernbedienung übertragen wird.
git
branch
git-branch
git-push
PlagueHammer
quelle
quelle
git push
, das von Interesse sein könnteAntworten:
Sie können das Standardverhalten steuern, indem Sie push.default in Ihrer Git-Konfiguration festlegen. Aus der Dokumentation zu git-config (1) :
Definiert die Aktion, die git push ausführen soll, wenn in der Befehlszeile keine Referenzspezifikation angegeben ist, in der Fernbedienung keine Referenzspezifikation konfiguriert ist und keine der in der Befehlszeile angegebenen Optionen eine Referenzspezifikation impliziert. Mögliche Werte sind:
nothing
: nichts schiebenmatching
: Alle passenden Zweige schiebenAlle Zweige, die an beiden Enden den gleichen Namen haben, gelten als übereinstimmend.
Dies war früher die Standardeinstellung, aber nicht seit Git 2.0 (
simple
ist die neue Standardeinstellung).upstream
: Schieben Sie den aktuellen Zweig in seinen Upstream-Zweig (tracking
ist ein veraltetes Synonym für Upstream).current
: Schieben Sie den aktuellen Zweig in einen gleichnamigen Zweigsimple
: (neu in Git 1.7.11) wie Upstream, weigert sich jedoch zu pushen, wenn sich der Name des Upstream-Zweigs vom lokalen unterscheidetDies ist die sicherste Option und eignet sich gut für Anfänger.
Dieser Modus ist in Git 2.0 zum Standard geworden.
Befehlszeilenbeispiele:
So zeigen Sie die aktuelle Konfiguration an:
So legen Sie eine neue Konfiguration fest:
quelle
simple
Modus gibt. Dieser Modus soll in Zukunft zum Standard werden.simple
funktioniert wieupstream
, aber wiecurrent
erfordert, dass die Filialnamen an beiden Enden gleich sind.simple
Verhalten jetzt die Standardeinstellung ist.Sie können das Standardverhalten für Ihr Git mit push.default einrichten
oder wenn Sie viele Repositorys haben und dann für alle dasselbe wollen
Der Strom in diesem Setup bedeutet, dass Sie den aktuellen Zweig standardmäßig nur pushen, wenn Sie git push ausführen
Andere Optionen sind:
UPDATE - NEUER WEG, DAS ZU TUN
Ab Git 1.7.11 gehen Sie wie folgt vor:
Dies ist eine neue Einstellung, die auf die gleiche Weise wie die aktuelle Einstellung funktioniert und laut Gerüchten standardmäßig aus Version 2.0 git wird
quelle
git push origin
Überträgt alle Änderungen in den lokalen Zweigen mit den entsprechenden Remote-Zweigen beiorigin
As forgit push
Aus dem Abschnitt Beispiele der
git-push
Manpagequelle
Ich habe meinen Code einfach einem Zweig übergeben und ihn wie folgt an github gesendet:
quelle
Hier ist eine sehr praktische und hilfreiche Information über Git Push : Git Push: Nur der Tipp
Die häufigste Verwendung von Git Push besteht darin, Ihre lokalen Änderungen in Ihr öffentliches Upstream-Repository zu übertragen. Angenommen, der Upstream ist eine Remote-Datei mit dem Namen "origin" (der Standard-Remote-Name, wenn Ihr Repository ein Klon ist) und der Zweig, auf den / von dem aktualisiert werden soll, heißt "master" (der Standard-Zweigstellenname).
git push origin master
git push origin
überträgt Änderungen von allen lokalen Zweigen auf übereinstimmende Zweige der Ursprungsfernbedienung.git push origin master
überträgt Änderungen vom lokalen Hauptzweig zum entfernten Hauptzweig.git push origin master:staging
Überträgt Änderungen vom lokalen Hauptzweig zum Remote-Staging-Zweig, falls vorhanden.quelle
git push origin branch_name
aus irgendeinem Grund schieben nicht nurbranch_name
Zweig, sondern auch andere meine lokalen Zweige (Git-Version 1.9.1).git push origin master:staging
ist ein tolles verstecktes Juwel!(März 2012)
Achtung: Diese Standardrichtlinie
matching
kann sich bald ändern(manchmal nach git1.7.10 +) :
Siehe " Bitte besprechen Sie: Was sollte" Git Push "tun, wenn Sie nicht sagen, was Sie drücken sollen? "
http://thread.gmane.org/gmane.comp.version-control.git/192547/focus=192694
quelle
Ich habe dies einfach in meinen Abschnitt mit den .gitconfig-Aliasen eingefügt und finde es toll, wie es funktioniert:
Schiebt den aktuellen Zweig zum Ursprung mit
git pub
oder einem anderen Repo mitgit pub repo-name
. Lecker.quelle
git push -u --repo="origin" $1;
stattdessen. Es funktioniert ganz gut, außer wenn Sie in ein anderes Repository pushen, wird derSie können den aktuellen Zweig mit dem Befehl verschieben
(von hier genommen )
quelle
Ein Git-Push versucht, alle lokalen Zweige auf den Remote-Server zu übertragen. Dies ist wahrscheinlich das, was Sie nicht möchten. Ich habe ein paar Annehmlichkeiten eingerichtet, um damit umzugehen:
Alias "gpull" und "gpush" entsprechend:
In meinem ~ / .bash_profile
Wenn Sie also "gpush" oder "gpull" ausführen, wird nur mein "aktuell aktiv" -Zweig verschoben.
quelle
Sie können dieses Standardverhalten in Ihrem
.gitconfig
Beispiel ändern :Führen Sie Folgendes aus, um die aktuellen Einstellungen zu überprüfen:
quelle
Anstatt Aliase zu verwenden, ziehe ich es vor, Git-XXX-Skripte zu erstellen, damit ich sie einfacher steuern kann (unsere Entwickler haben alle ein bestimmtes quellengesteuertes Verzeichnis auf ihrem Weg für diese Art von Dingen).
Dieses Skript (aufgerufen
git-setpush
) setzt den Konfigurationswert für denremote.origin.push
Wert auf etwas, das nur den aktuellen Zweig pusht:Beachten Sie, dass bei der Verwendung
Gerrit
das Ziel auf festgelegt wirdrefs/for/XXX
, in einen Überprüfungszweig zu pushen. Es wird auch davon ausgegangen, dass der Ursprung Ihr entfernter Name ist.Rufen Sie es auf, nachdem Sie einen Zweig mit ausgecheckt haben
Es könnte natürlich angepasst werden, um auch das Auschecken durchzuführen, aber ich mag Skripte, um eine Sache zu tun und es gut zu machen
quelle
feature/fix_fubar
alle auf allgemeinere Upstream-Zweige wiemaster
oderdevelop
, sodass dies auf den falschen Upstream- Zweig verweist. Wie sieht Ihr lokaler Fluss für gerritgesteuerte Repos aus?git config remote.origin.push HEAD:refs/for/master
.Ich habe der .bashrc-Datei die folgenden Funktionen hinzugefügt, um diese Aufgaben zu automatisieren. Git Push / Git Pull + Name des aktuellen Zweigs.
quelle