Git-Push zu einem anderen Zweig mit einem anderen Namen
-
der
git push
-Befehl und seine reichhaltigen Optionen -
eine ordentliche Verknüpfung in
git push
, um den Parameterrefspecs
einmal zu setzen und viele Male zu verwenden - Wann möchten wir Git auf einen anderen Branch pushen?
-
Git
Refspecs
- Ressourcen
Der git push
bietet eine Vielzahl von Optionen, mit denen Sie die volle Leistungsfähigkeit von Git nutzen können. Einer davon sind die Parameter source:destination
refspecs
.
Wir verwenden diese, um zu einem bestimmten Zweig mit einem Namen unserer Wahl zu git pushen
. Gegen Ende werden wir einige Anwendungsfälle sehen, bei denen wir immense Gewinne in unserem Workflow erzielen, wenn wir einen neuen Branch git pushen
und nicht in einen Branch mit demselben Namen wie unser Local.
der git push
-Befehl und seine reichhaltigen Optionen
Git beschränkt uns nicht auf einen einfachen Push in eine Remote mit dem bloßen Befehl git push
. Stattdessen bietet es uns mehrere leistungsstarke Optionen, mit denen wir unser gewünschtes Ergebnis erzielen können.
Zwei davon sind die Parameter [remote_repe]
und [src:dst]
refspecs
.
Lassen Sie uns sehen, wie diese Parameter uns helfen, auf einen anderen Zweig zu git push
.
git push [remote_repo] [refspecs]
Das [remote_repo]
bezieht sich auf das entfernte Repository in unserem lokalen System. Meistens ist dieser Name Herkunft
.
Die [refspecs]
ist der interessante Parameterschlüssel zum git push
auf einen bestimmten Branch. Wir werden uns gegen Ende dieses Beitrags ausführlich mit refspecs
befassen.
Es hat die Form: src:dst
, wobei sich src
auf den lokalen Zweig bezieht, den wir pushen möchten. Das dst
ist die Referenz (oder der Name) auf den Remote-Zweig, in den wir pushen möchten.
Er hat standardmäßig den gleichen Namen wie der src
-Parameter, aber wir können uns für git push
zu einem bestimmten Zweig entscheiden, indem wir ausdrücklich den dst
-Wert angeben.
Wir richten zuerst ein lokales Repository ein und verknüpfen es mit einem Remote-Repository. Dann erstellen wir auch einen neuen Zweig in unserem lokalen Repository.
Unser entferntes Repository hat den feature_branch
nicht auf unserem lokalen.
Wir pushen nun den feature_branch
auf einen anderen Branch mit neuem Namen.
git push origin feature_branch:teamX_featureY
Wir sehen jetzt, dass der feature_branch
auf unserer Fernbedienung in einen neuen Branch mit einem anderen Namen verschoben wurde.
Beachten Sie, dass Sie diese Argumente jedes Mal übergeben müssen, wenn Sie pushen; Andernfalls wird der Parameter dst
standardmäßig auf den Namen des Zweigs in Ihrem lokalen Repository gesetzt. Git bietet uns jedoch eine nette Abkürzung, um uns die Mühe zu ersparen, diese wiederholt einzugeben.
eine ordentliche Verknüpfung in git push
, um den Parameter refspecs
einmal zu setzen und viele Male zu verwenden
In Git ist der Upstream-Name einer Verzweigung die Verzweigung, in die Sie sie immer verschieben. Sie können diesen Wert mit dem folgenden Befehl festlegen.
git branch --set-upstream-to <remote_branch>
Sie können diesen Befehl aber auch mit git push
ausführen, indem Sie einfach das Flag -u
übergeben.
git push -u origin local:different_remote
Wenn Sie dies tun, wird Ihr lokaler Zweig beim nächsten Push in den Zweig different_remote
gepusht. Sie müssen es also nicht jedes Mal explizit benennen.
Wir sehen diesen neuen Upstream-Zweig auch in unserem Remote-Repository.
Sie müssen den Wert push.default
in Ihrer config
-Datei mit dem folgenden Befehl ändern.
git config push.default upstream
Wenn Sie nun second_feature
pushen, ohne den Parameter dst
zu erwähnen, pusht Git es automatisch in ein different_remote
.
git push origin second_feature
Wann möchten wir Git auf einen anderen Branch pushen?
Einige Anwendungsfälle, in denen wir einen neuen Zweig git pushen
möchten, sind:
-
Angenommen, Sie entwickeln ein cooles Feature oder Modul und möchten es in mehr als ein Projekt einbringen, an dem Sie arbeiten. Sie könnten sogar eine einfache generische Funktion wie ein von Ihnen entworfenes Halloween-Menü lieben und würden es in vielen Ihrer Apps haben wollen.
Sie müssten es in jedes Projekt mit einem anderen Namen schieben.
-
Manchmal gibt es eine Diskrepanz zwischen den Benennungsschemata im zentralen (entfernten) Repository und Ihrem lokalen Setup. Dies gilt insbesondere, wenn Sie an mehreren Projekten mit großen Teams arbeiten.
Der Befehl
git push
mit seinenrefspecs
-Optionen rettet Ihnen in solchen Fällen den Tag.
Lassen Sie uns schließlich, bevor wir uns verabschieden, tiefer in die refspecs
eintauchen.
Git Refspecs
Git speichert intern Verweise auf alle Objekte in Ihrem Repository. Dadurch ist es einfach, schnell auf die verschiedenen Git-Objekte zuzugreifen, ohne immer kryptische SHA
-Hashes zu verwenden.
In Git beziehen wir uns (Wortspiel beabsichtigt) auf diese Referenzen als refspecs
.
Diese refspecs
werden in speziellen Verzeichnissen in Ihrem Repository gespeichert.
-
Das Verzeichnis
refs/heads
speichert die Verweise auf Objekte in Ihrem lokalen Repository. -
Die
refs/remotes
haben Verweise auf Ihre Remote-Repository-Git-Objekte.
Ressourcen
- https://www.freecodecamp.org/news/git-push-to-remote-branch-how-to-push-a-local-branch-to-origin/
- https://github.com/jiffyclub/blog-posts/commit/4bf63cdafc9a3eb9602646ced972913ef73386bd
- https://davidwalsh.name/git-push-different-name
- https://stackoverflow.com/questions/36139275/git-pushing-to-remote-branch
- https://git-scm.com/docs/git-push