Git
Verzweigung
Suche…
Syntax
-
git branch [--set-upstream | --track | --no-track] [-l] [-f] <branchname> [<start-point>]
-
git branch (--set-upstream-to=<upstream> | -u <upstream>) [<branchname>]
-
git branch --unset-upstream [<branchname>]
-
git branch (-m | -M) [<oldbranch>] <newbranch>
-
git branch (-d | -D) [-r] <branchname>…
-
git branch --edit-description [<branchname>]
-
git branch [--color[=<when>] | --no-color] [-r | -a] [--list] [-v [--abbrev=<length> | --no-abbrev]] [--column[=<options>] | --no-column] [(--merged | --no-merged | --contains) [<commit>]] [--sort=<key>] [--points-at <object>] [<pattern>…]
Parameter
Parameter | Einzelheiten |
---|---|
-d, --delete | Einen Zweig löschen. Der Zweig muss in seinem Upstream-Zweig oder in HEAD vollständig zusammengeführt werden, wenn kein Upstream mit --track oder --set-upstream |
-D | --delete --force für --delete --force |
-m, - bewegen | Verschieben / Umbenennen eines Zweigs und des entsprechenden Reflogs |
-M | --move --force für --move --force |
-r, --remotes | Listen oder löschen Sie (falls mit -d verwendet) die Remote-Tracking-Zweige |
-a, --all | Listen Sie sowohl Fernverfolgungszweige als auch lokale Zweigstellen auf |
--Liste | Aktivieren Sie den Listenmodus. git branch <pattern> versucht, einen Zweig zu erstellen. Verwenden Sie git branch --list <pattern> um übereinstimmende Zweige git branch --list <pattern> |
--set-upstream | Wenn der angegebene Zweig noch nicht existiert oder --force angegeben wurde, --track genau wie --track . Ansonsten wird die Konfiguration wie --track beim Erstellen der Verzweigung festgelegt, außer dass die Verzweigungspunkte nicht geändert werden |
Bemerkungen
Jedes Git-Repository hat eine oder mehrere Niederlassungen . Eine Verzweigung ist eine benannte Referenz auf den HEAD
einer Folge von Commits.
Ein Git-Repo verfügt über einen aktuellen Zweig (durch ein *
in der Liste der Zweignamen, die vom Befehl git branch
gedruckt werden). Wenn Sie mit dem Befehl git commit
ein neues Commit erstellen, wird das neue Commit zum HEAD
des aktuellen Zweigs Der vorherige HEAD wird das übergeordnete Element des neuen Commits.
Ein neuer Zweig hat den gleichen HEAD
wie der Zweig, aus dem er erstellt wurde, bis etwas an den neuen Zweig übergeben wird.
Auflistung der Niederlassungen
Git bietet mehrere Befehle zum Auflisten von Zweigen. Alle Befehle verwenden die Funktion von git branch
, die eine Liste bestimmter Verzweigungen bereitstellt, abhängig davon, welche Optionen in der Befehlszeile stehen. Git zeigt, wenn möglich, den aktuell ausgewählten Zweig mit einem Stern daneben an.
Tor | Befehl |
---|---|
Lokale Filialen auflisten | git branch |
Listen Sie lokale Niederlassungen ausführlich auf | git branch -v |
Liste entfernter und lokaler Niederlassungen | git branch -a ODER git branch --all |
Liste entfernter und lokaler Niederlassungen (ausführlich) | git branch -av |
Liste entfernter Zweige | git branch -r |
Listen Sie entfernte Zweige mit dem neuesten Commit auf | git branch -rv |
Listen Sie zusammengeführte Zweige auf | git branch --merged |
Listen Sie nicht zusammengeführte Zweige auf | git branch --no-merged |
Liste der Zweige mit Commit | git branch --contains [<commit>] |
Anmerkungen :
- Durch Hinzufügen eines zusätzlichen
v
zu-v
z. B.$ git branch -avv
oder$ git branch -vv
wird auch der Name des Upstream-Zweigs gedruckt. - Zweige in roter Farbe sind entfernte Zweige
Neue Filialen anlegen und auschecken
Um einen neuen Zweig zu erstellen, während Sie auf dem aktuellen Zweig bleiben, verwenden Sie:
git branch <name>
Im Allgemeinen darf der Zweigname keine Leerzeichen enthalten und unterliegt anderen hier aufgeführten Spezifikationen. So wechseln Sie zu einem vorhandenen Zweig:
git checkout <name>
So erstellen Sie einen neuen Zweig und wechseln zu ihm:
git checkout -b <name>
Verwenden Sie einen der folgenden Befehle, um einen Zweig an einem anderen Punkt als dem letzten Commit des aktuellen Zweigs (auch als HEAD bezeichnet) zu erstellen:
git branch <name> [<start-point>]
git checkout -b <name> [<start-point>]
Der <start-point>
beliebig seine Revision zu GIT (zB ein anderer Zweigname, commit SHA oder eine symbolische Referenz wie Kopf oder einen Tag - Namen) bekannt:
git checkout -b <name> some_other_branch
git checkout -b <name> af295
git checkout -b <name> HEAD~5
git checkout -b <name> v1.0.5
So erstellen Sie eine Verzweigung aus einer entfernten Verzweigung (der Standardwert <remote_name>
ist Ursprung):
git branch <name> <remote_name>/<branch_name>
git checkout -b <name> <remote_name>/<branch_name>
Wenn ein bestimmter Zweigname nur auf einer Fernbedienung vorhanden ist, können Sie einfach verwenden
git checkout -b <branch_name>
das ist äquivalent zu
git checkout -b <branch_name> <remote_name>/<branch_name>
Manchmal müssen Sie möglicherweise einige Ihrer letzten Commits in einen neuen Zweig verschieben. Dies kann durch Verzweigung und "Zurückrollen" wie folgt erreicht werden:
git branch <new_name>
git reset --hard HEAD~2 # Go back 2 commits, you will lose uncommitted work.
git checkout <new_name>
Hier ist eine illustrative Erklärung dieser Technik:
Initial state After git branch <new_name> After git reset --hard HEAD~2
newBranch newBranch
↓ ↓
A-B-C-D-E (HEAD) A-B-C-D-E (HEAD) A-B-C-D-E (HEAD)
↑ ↑ ↑
master master master
Einen Zweig lokal löschen
$ git branch -d dev
Löscht den Zweig mit dem Namen dev
wenn seine Änderungen mit einem anderen Zweig zusammengeführt werden und nicht verloren gehen. Wenn der dev
Zweig Änderungen enthält, die noch nicht zusammengeführt wurden und verloren gingen, schlägt git branch -d
fehl:
$ git branch -d dev
error: The branch 'dev' is not fully merged.
If you are sure you want to delete it, run 'git branch -D dev'.
Mit der Warnmeldung können Sie das Löschen des Zweigs erzwingen (und alle nicht zusammengeführten Änderungen in diesem Zweig verlieren), indem Sie das Flag -D
verwenden:
$ git branch -D dev
Überprüfen Sie einen neuen Zweig, der einen entfernten Zweig verfolgt
Es gibt drei Möglichkeiten , eine Niederlassung zu schaffen feature
, die die Remote - Zweigspuren origin/feature
:
-
git checkout --track -b feature origin/feature
, -
git checkout -t origin/feature
, -
git checkout feature
- vorausgesetzt, es gibt keinen lokalenfeature
Zweig und es gibt nur einen Remote mit demfeature
Zweig.
So richten Sie Upstream ein, um den Remote-Zweig zu verfolgen:
-
git branch --set-upstream-to=<remote>/<branch> <branch>
-
git branch -u <remote>/<branch> <branch>
woher:
-
<remote>
kann sein:origin
,develop
oder vom Benutzer erstellt, -
<branch>
ist der Zweig des Benutzers, der auf der Ferne verfolgt werden soll.
So überprüfen Sie, welche Remote-Zweigstellen Ihre lokalen Zweigstellen verfolgen:
-
git branch -vv
Einen Zweig umbenennen
Benennen Sie den ausgecheckten Zweig um:
git branch -m new_branch_name
Einen anderen Zweig umbenennen:
git branch -m branch_you_want_to_rename new_branch_name
Überschreiben Sie eine einzelne Datei im aktuellen Arbeitsverzeichnis mit derselben Datei aus einem anderen Zweig
Die ausgecheckte Datei überschreibt die noch nicht vorgenommenen Änderungen, die Sie in dieser Datei vorgenommen haben.
Dieser Befehl file.example
die Datei file.example
(die sich im Verzeichnispfad path/to/
) aus und überschreibt alle Änderungen, die Sie an dieser Datei vorgenommen haben.
git checkout some-branch path/to/file
some-branch
kann alles sein , tree-ish
zu git (siehe bekannt Revision Auswahl und gitrevisions für weitere Details)
Sie müssen --
vor dem Pfad hinzufügen, wenn Ihre Datei mit einer Datei verwechselt werden kann (ansonsten optional). Nach dem --
können keine weiteren Optionen geliefert werden.
git checkout some-branch -- some-file
Die zweite some-file
ist in diesem Beispiel eine Datei.
Löschen Sie einen entfernten Zweig
Um einen Zweig im origin
Remote-Repository zu löschen, können Sie für Git Version 1.5.0 und neuer verwenden
git push origin :<branchName>
Ab Git Version 1.7.0 können Sie einen Remote-Zweig mit löschen
git push origin --delete <branchName>
So löschen Sie einen lokalen Remote-Tracking-Zweig:
git branch --delete --remotes <remote>/<branch>
git branch -dr <remote>/<branch> # Shorter
git fetch <remote> --prune # Delete multiple obsolete tracking branches
git fetch <remote> -p # Shorter
Einen Zweig lokal löschen. Beachten Sie, dass dadurch die Verzweigung nicht gelöscht wird, wenn sich nicht zusammengeführte Änderungen ergeben:
git branch -d <branchName>
So löschen Sie einen Zweig, auch wenn Änderungen nicht zusammengeführt wurden:
git branch -D <branchName>
Erstellen Sie einen verwaisten Zweig (dh Zweig ohne übergeordnetes Commit)
git checkout --orphan new-orphan-branch
Das erste Commit für diesen neuen Zweig wird keine Eltern haben, und es wird die Wurzel einer neuen Geschichte sein, die völlig von allen anderen Zweigen und Commits getrennt ist.
Zweig zur Fernbedienung drücken
Verwenden Sie diese Option, um in Ihrem lokalen Zweig vorgenommene Commits in ein Remote-Repository zu verschieben.
Der Befehl git push
benötigt zwei Argumente:
- Ein entfernter Name, z. B.
origin
- Ein Zweigname, zum Beispiel
master
Zum Beispiel:
git push <REMOTENAME> <BRANCHNAME>
Beispielsweise führen Sie in der Regel git push origin master
, um Ihre lokalen Änderungen in Ihr Online-Repository zu übernehmen.
Mit -u
(kurz für --set-upstream
) werden die Tracking-Informationen während des Push- --set-upstream
eingerichtet.
git push -u <REMOTENAME> <BRANCHNAME>
Standardmäßig schiebt git
den lokalen Zweig an einen entfernten Zweig mit demselben Namen. Wenn Sie beispielsweise ein lokales new-feature
namens new-feature
, wenn Sie auf den lokalen Zweig drücken, wird auch ein new-feature
Zweig für einen entfernten Zweig erstellt. Wenn Sie einen anderen Namen für den Remote - Zweig verwenden möchten, fügen Sie den Remote - Namen nach dem lokalen Zweignamen, getrennt durch :
:
git push <REMOTENAME> <LOCALBRANCHNAME>:<REMOTEBRANCHNAME>
Verschieben Sie den aktuellen Zweigkopf in ein beliebiges Commit
Ein Zweig ist nur ein Zeiger auf ein Commit, sodass Sie ihn frei verschieben können. aabbcc
den Befehl aus, damit sich der Zweig auf das aabbcc
bezieht
git reset --hard aabbcc
Bitte beachten Sie, dass dadurch der aktuelle Commit Ihrer Zweigstelle und damit der gesamte Verlauf überschrieben wird. Durch diesen Befehl könnten Sie etwas Arbeit verlieren. In diesem Fall können Sie das verlorene Commit mit dem Reflog wiederherstellen. Es kann empfohlen werden, diesen Befehl in einem neuen Zweig anstelle des aktuellen Zweigs auszuführen.
Dieser Befehl kann jedoch besonders nützlich sein, wenn Sie neue Basenänderungen vornehmen oder solche Änderungen vornehmen.
Schneller Wechsel zum vorherigen Zweig
Mit können Sie schnell zum vorherigen Zweig wechseln
git checkout -
In Filialen suchen
Um lokale Zweige aufzulisten, die ein bestimmtes Commit oder Tag enthalten
git branch --contains <commit>
Lokale und entfernte Zweige auflisten, die ein bestimmtes Commit oder Tag enthalten
git branch -a --contains <commit>