Ich arbeite an einem lokalen Git-Repository. Es gibt zwei Zweige master
und feature_x
.
Ich möchte auf feature_x
das Remote-Repo übertragen, aber ich möchte die Änderungen nicht auf den master
Zweig übertragen.
Funktioniert ein Zweig git push origin feature_x
aus meinem feature_x
Zweig ( feature_x
Zweig existiert bereits auf Remote)?
Ich möchte dies nicht auf meiner Box testen, da ich momentan nicht auf Master drücken kann.
Antworten:
Ja, machen Sie einfach Folgendes
quelle
git push -u origin <branch-name>
. Sie haben es jedoch nicht erwähnt. Ist es nötig ?-u
Option für einengit-push
Befehl legt die Upstream-Referenz für die Verfolgung des gerade geschobenen Zweigs fest. Dadurchgit-pull
wissen Dinge wie in diesem Zweig in Zukunft bereits, aus welchem Zweig gezogen werden soll, ohne ihn anzugeben. Es ist nicht als Option erforderlich, einen einzelnen Zweig zu pushen, wird jedoch häufig verwendet, da viele Benutzer möchten, dass der lokale Zweig den entfernten Zweig verfolgt, den sie pushen.Standardmäßig werden
git push
alle Remote-Zweige aktualisiert. Sie können git jedoch so konfigurieren, dass nur der aktuelle Zweig auf den Upstream aktualisiert wird.Dies bedeutet, dass git nur den aktuellen (ausgecheckten) Zweig aktualisiert, wenn Sie git push ausführen.
Andere gültige Optionen sind:
nothing
: Drücken Sie nichts (Fehler raus), es sei denn, es wird ausdrücklich eine Referenz angegeben . Dies ist in erster Linie für Menschen gedacht, die Fehler vermeiden wollen, indem sie immer explizit sind.matching
Schieben alle Zweige der HAVING: gleichnamigen an beiden Enden. (Standardoption vor Version 1.7.11)upstream
: Schieben Sie den aktuellen Zweig in den vorgelagerten Zweig. Dieser Modus ist nur dann sinnvoll, wenn Sie auf dasselbe Repository pushen, aus dem Sie normalerweise abrufen würden (dh zentralen Workflow ). Es ist nicht erforderlich, dass der lokale und der Remote-Zweig denselben Namen haben .tracking
: Veraltet,upstream
stattdessen verwenden.current
Drücken Sie den Stromzweig an den entfernten Zweig der: gleichnamigen auf der Empfängerseite. Funktioniert sowohl in zentralen als auch in nicht zentralen Workflows.simple
: [verfügbar seit Version 1.7.11] Arbeiten Sie im zentralisierten Workflow wieupstream
mit einer zusätzlichen Sicherheit, um das Drücken zu verweigern, wenn sich der Name des Upstream-Zweigs vom lokalen unterscheidet. Wenn Sie auf eine Fernbedienung drücken, die sich von der Fernbedienung unterscheidet, von der Sie normalerweise ziehen, arbeiten Sie alscurrent
. Dies ist die sicherste Option und für Anfänger geeignet. Dieser Modus ist in Git 2.0 zum Standard geworden.quelle
current
war das , wonach ich gesucht habe, standardmäßig wird es in der Filialegit push
in diefoo
Filiale verschobenorigin/foo
.current
standardmäßig sinnvoller ist.simple
standardmäßig für sinnvoller. Ich habe die Antwort mit "Wann soll was verwendet werden" aktualisiert. Bitte schauen Sie.simple
.Kleines Update zusätzlich zu Karthik Boses Antwort - Sie können git global konfigurieren, damit sich alle Ihre Arbeitsbereiche so verhalten:
quelle
Nehmen wir also an, Sie haben einen lokalen Zweig foo, einen Remote namens origin und einen Remote branch origin / master.
Um den Inhalt von foo auf origin / master zu verschieben, müssen Sie zuerst den Upstream einstellen:
Dann können Sie zu diesem Zweig pushen, indem Sie:
Im letzten Befehl können Sie --force hinzufügen, um die gesamte Herkunfts- / Master-Historie durch die von foo zu ersetzen.
quelle