Wie drückt man nur einen einzelnen Git -Zweig (und keine anderen Zweige)?
Frage
Ich arbeite an einem lokalen Git -Repository. Es gibt zwei Zweige, master
und feature_x
.
Ich möchte schieben feature_x
zum Remote -Repo, aber ich möchte die Änderungen nicht auf die ändern master
Zweig.
Wird a git push origin feature_x
Von meinem feature_x
Zweig (feature_x
Branch existiert bereits in Fernbedienung) Arbeit?
Ich möchte dies nicht auf meiner Box testen, weil ich momentan nicht zum Master -Meister drängen kann.
Lösung
Ja, machen Sie einfach Folgendes
git checkout feature_x
git push origin feature_x
Andere Tipps
Standardmäßig git push
Aktualisiert alle Remote -Zweige. Sie können GIT jedoch so konfigurieren, dass nur die aktuelle Filiale auf dem stromaufwärts gelegenen Zweig aktualisiert werden.
git config push.default upstream
Dies bedeutet, dass Git nur die aktuelle (ausgecheckte) Filiale aktualisiert, wenn Sie Git drücken.
Weitere gültige Optionen sind:
nothing
: Schieben Sie nichts (Fehler heraus), es sei denn Ein RefSpec wird ausdrücklich angegeben. Dies ist in erster Linie für Menschen gedacht, die Fehler vermeiden wollen, indem sie immer explizit sind.matching
: Drücken Sie alle Zweige mit dem gleicher Name an beiden Enden. (Standardoption vor Ver 1.7.11)upstream
: Drücken Sie den aktuellen Zweig in seinen stromaufwärts gelegenen Zweig. Dieser Modus ist nur sinnvoll, wenn Sie auf das gleiche Repository drängen, aus dem Sie normalerweise ziehen würden (dh zentraler Workflow). Sie müssen nicht den gleichen Namen haben für lokale und abgelegene Niederlassung.tracking
: Veraltet, verwenden Sieupstream
stattdessen.current
: Drücken Sie den aktuellen Zweig zum abgelegenen Zweig der gleicher Name am Empfangsende. Arbeitet sowohl in zentralen als auch in nicht-zentralen Workflows.simple
: [verfügbar seit Ver 1.7.11] im zentralisierten Workflow wie verarbeiten wieupstream
Mit einer zusätzlichen Sicherheit, um sich zu weigern, sich zu verschieben, wenn sich der Name des vorgelagerten Zweigs von der lokalen unterscheidet. Wenn Sie in eine Fernbedienung drängen, die sich von der Fernbedienung unterscheidet, aus der Sie normalerweise ziehen, arbeiten Sie alscurrent
. Dies ist die sicherste Option und eignet sich für Anfänger. Dieser Modus ist der Standard in Git 2.0 geworden.
Geringes Update oben auf Karthik Boses Antwort - Sie können Git global konfigurieren, um alle Ihre Arbeitsbereiche zu beeinflussen, um sich so zu verhalten:
git config --global push.default upstream
Nehmen wir also an, Sie haben einen lokalen Zweig -Foo, eine Fernbedienung namens Origin und einen Remote -Zweig -Ursprung/Master.
Um den Inhalt von Foo zu Origin/Master zu bringen, müssen Sie zunächst den stromaufwärts gelegenen Einrichten einrichten:
git checkout foo
git branch -u origin/master
Dann können Sie diesen Zweig mit:
git push origin HEAD:master
Im letzten Befehl können Sie -Force, um die gesamte Herkunftsgeschichte/Master durch das von Foo zu ersetzen.