Kopieren Sie den Remote-Zweig in den lokalen Zweig in Git
-
die neueste und beste Methode zum Kopieren von Remote-Zweigstellen in lokale Zweigstellen in Git -
git switch -c
-
die alte Methode zum Kopieren von entfernten Zweigen in lokale Zweige in Git -
git checkout
-
Kopieren Sie den entfernten Zweig in den lokalen Zweig in Git mit der Option
--copy
im Befehlgit branch
- Unterschied zwischen Git-Kopie und Klonen
Dieses Tutorial zeigt, wie man den neuen Befehl git switch -c
verwendet, um einen Remote-Branch in einen lokalen Branch zu kopieren. Wir werden zwei ältere Möglichkeiten besprechen, dies zu tun - git checkout
remote branch to local und git branch mit dem Flag -c
.
Wir kopieren die Inhalte nur in eine lokale Filiale, stellen aber keine Tracking-Beziehung zur Gegenstelle her. Der Anwendungsfall besteht hier darin, ein Backup zu erstellen oder den Inhalt zu untersuchen, aber wir möchten die Änderungen nicht in den Remote-Zweig zusammenführen.
die neueste und beste Methode zum Kopieren von Remote-Zweigstellen in lokale Zweigstellen in Git - git switch -c
Früher wurde der Befehl git checkout
für mehrere Zwecke überladen. Es checkt in einen anderen Zweig ein und stellt Änderungen aus einem Commit wieder her.
Dies führte zu viel Verwirrung unter den Entwicklern.
Neuere Versionen von Git (Git v2.23, Q3 2019 und höher) haben einen neuen Befehl eingeführt – git switch
, um in einen anderen Branch einzuchecken. Mit seiner Option --create
können wir ihn verwenden, um einen neuen Zweig zu erstellen, wenn er nicht existiert, bevor wir zu ihm wechseln.
Dies ist jetzt die am besten empfohlene Methode, um einen Remote-Zweig in einen lokalen Zweig zu kopieren.
Wir richten ein Remote Repo mit ein paar Branches ein und listen diese mit dem Befehl git branch
auf.
git branch -a
Auf dem Remote-Repository sieht es so aus:
Wir kopieren den Branch mit dem Namen another_branch
in unser lokales Repository.
Zuerst werden wir die entfernten Zweige mit dem Befehl git fetch
in unser lokales Repository holen.
git fetch --all
Wir sehen, dass dies die entfernten Branches abruft.
Wir erstellen nun mit dem Befehl git switch
eine Kopie des origin/another_branch
.
Wir übergeben ein paar Optionen - das Flag -c
, um den neuen Kopierzweig zu erstellen (er existiert vorher nicht). Wir geben auch die Option --no-track
an, weil wir nur eine Kopie des Zweigs und keinen Klon wollen (später in diesem Beitrag).
git switch -c <new_branch> <old_branch> --no-track
Dieser Befehl hat eine neue Kopie mit dem Namen new_local_copy
erstellt und in diese gewechselt (gecheckt).
Wenn wir nun alle Branches in unserem lokalen Repository auflisten, verfolgt der kopierte Branch new_local_copy
den von uns kopierten Branch another_branch
nicht.
Verwenden Sie am besten den git switch remote branch
, um eine Kopie davon in unserem lokalen Repository zu erstellen.
die alte Methode zum Kopieren von entfernten Zweigen in lokale Zweige in Git - git checkout
git checkout
war ein Befehl, der in alten Git-Versionen viele Dinge tat. Einer von ihnen wechselte zu einer anderen Filiale.
Git checkout remote branch to local war also die alte Methode, um eine lokale Kopie zu erstellen.
Wir checken zuerst in den entfernten Zweig aus, den wir kopieren möchten. (Stellen Sie sicher, dass Sie zuerst die Äste holen.)
git checkout <remote_branch>
Als nächstes erstellen wir eine neue Kopie dieses Zweigs mit dem Befehl git branch
. Wir übergeben wieder die Option --no-track
, weil wir keine Tracking-Beziehung zwischen den beiden Zweigen erstellen möchten.
git branch <new_branc> --no-track
Wir sehen unten, dass der neu erstellte Branch den alten Remote-Branch nicht verfolgt.
Zwischen diesem alten Weg und dem neu eingeführten git switch
-Befehl hat der git branch
-Befehl die --copy
-Option gelernt, um einen Branch zu kopieren. Wir werden nun sehen, wie man mit dieser Methode einen Remote in einen neuen lokalen Zweig kopiert.
Kopieren Sie den entfernten Zweig in den lokalen Zweig in Git mit der Option --copy
im Befehl git branch
Es handelt sich um ein zweistufiges Verfahren.
Zuerst checken wir den Remote-Zweig mit dem Befehl git checkout
aus. Beachten Sie die Option --no-track
.
git checkout <old_branch> --no-track
Als nächstes kopieren wir in einen neuen Zweig, indem wir das Flag -c
(für --copy
) an den Befehl git branch
übergeben.
git branch -c <old_branch> <new_branch>
Auch hier können Sie unten sehen, dass die neue Kopie den alten Zweig nicht verfolgt.
Unterschied zwischen Git-Kopie und Klonen
Git copy
ist nicht dasselbe wie Git clone
. Es gibt ein paar feine Unterschiede.
-
Wenn Sie einen Zweig kopieren, folgt der neue Zweig nicht dem alten Zweig. Das bedeutet, dass zwischen den beiden keine Verbindung besteht – der neue Zweig hat lediglich den Inhalt des alten Zweigs kopiert.
Ein
Klon
verfolgt jedoch den alten Zweig. Das bedeutet, dass Sie diese Befehle in ihrer Vanilla-Form pushen, pullen, zusammenführen, rebasen und verwenden können, ohne explizite Argumente zu übergeben - die Tracking-Beziehung füllt die Zweignamen automatisch aus. -
In Git ist das Klonen auf Effizienz optimiert. Wenn Sie also klonen, erhält der neue Zweig nicht die Reflogs, Konfigurationen und Hooks des alten Zweigs.
Eine
Kopie
kopiert all diese ebenfalls. Es ist in manchen Fällen lebenswichtig, z. B. wenn Sie versuchen, verlorene Commits mit Hilfe vonreflog
wiederherzustellen. -
Eine Git-Kopieroperation hat einige typische Anwendungsfälle – am häufigsten, um ein Backup eines Remote-Zweigs zu erstellen. Ein weiterer Anwendungsfall ist, wenn ein Entwickler einen interessanten Remote-Feature-Zweig herunterladen und erkunden möchte, ohne die Absicht zu haben, seine Änderungen in die Hauptcodebasis zu übertragen.