Ein lokaler Zweig ist ein Zweig, den nur Sie (der lokale Benutzer) sehen können. Es ist nur auf Ihrem lokalen Computer vorhanden.
git branch myNewBranch # Create local branch named "myNewBranch"
Ein Remote-Zweig ist (in den meisten Fällen origin
) ein Zweig an einem Remote-Standort . Sie können den neu erstellten lokalen Zweig myNewBranch
an verschieben origin
. Jetzt können andere Benutzer es verfolgen.
git push -u origin myNewBranch # Pushes your newly created local branch "myNewBranch"
# to the remote "origin".
# So now a new branch named "myNewBranch" is
# created on the remote machine named "origin"
Ein Remote-Tracking-Zweig ist eine lokale Kopie eines Remote-Zweigs. Wenn myNewBranch
auf gedrückt wird origin
mit dem Befehl oben, mit dem Namen ein Remote - Tracking - Zweig origin/myNewBranch
auf Ihrem Rechner erstellt. Dieser Fern Tracking - Zweig verfolgt den Remote - Zweig myNewBranch
auf origin
. Sie können Ihren Remote-Tracking- Zweig mithilfe von git fetch
oder so aktualisieren , dass er mit dem Remote-Zweig synchronisiert ist git pull
.
git pull origin myNewBranch # Pulls new commits from branch "myNewBranch"
# on remote "origin" into remote tracking
# branch on your machine "origin/myNewBranch".
# Here "origin/myNewBranch" is your copy of
# "myNewBranch" on "origin"
Ein lokaler Verfolgungszweig ist ein lokaler Zweig , der einen anderen Zweig verfolgt. Auf diese Weise können Sie Commits zum / vom anderen Zweig verschieben / ziehen. Lokale Verfolgungszweige verfolgen in den meisten Fällen einen Fernverfolgungszweig. Wenn Sie einen lokalen Zweig dazu bringen origin
, die Option git push command
mit einer -u
Option zu verwenden (wie oben gezeigt), richten Sie den lokalen Zweig so ein, dass der Zweig myNewBranch
für die Fernverfolgung verfolgt wird origin/myNewBranch
. Dies ist erforderlich, um git push
und git pull
ohne Angabe eines Upstreams zum Drücken oder Ziehen zu verwenden.
git checkout myNewBranch # Switch to myNewBranch
git pull # Updates remote tracking branch "origin/myNewBranch"
# to be in sync with the remote branch "myNewBranch"
# on "origin".
# Pulls these new commits from "origin/myNewBranch"
# to local branch "myNewBranch which you just switched to.
Hier ist die lange Antwort.
Fernbedienungen:
Wenn Sie Git gemeinsam verwenden, müssen Sie Ihre Commits wahrscheinlich mit anderen Computern oder Standorten synchronisieren. Jeder Computer oder Standort wird in der Terminologie von Git als Remote bezeichnet , und jeder kann einen oder mehrere Zweige haben. Meistens haben Sie nur einen Namen
origin
. Führen Sie Folgendes aus, um alle Fernbedienungen aufzulistengit remote
:Sie können sehen, für welche Speicherorte diese Remote-Namen Verknüpfungen sind, indem Sie Folgendes ausführen
git remote -v
:Jede Fernbedienung hat ein Verzeichnis unter
git/refs/remotes/
:Zweige auf Ihrer Maschine:
TLDR: Auf Ihrem lokalen Computer gibt es drei Arten von Zweigen: lokale Nicht-Tracking-Zweige, lokale Tracking-Zweige und Remote-Tracking-Zweige. Auf einem Remotecomputer haben Sie nur einen Zweigtyp.
1. Lokale Niederlassungen
Sie können eine Liste aller lokalen Zweige auf Ihrem Computer anzeigen, indem Sie Folgendes ausführen
git branch
:Jeder lokale Zweig hat eine Datei unter
.git/refs/heads/
:Es gibt zwei Arten von lokalen Zweigen auf Ihrem Computer: Nicht verfolgte lokale Zweige und Verfolgung lokaler Zweige.
1.1 Nicht nachverfolgbare lokale Niederlassungen
Lokale Zweige ohne Nachverfolgung sind keinem anderen Zweig zugeordnet. Sie erstellen eine durch Ausführen
git branch <branchname>
.1.2. Verfolgung lokaler Niederlassungen
Das Verfolgen lokaler Zweige ist einem anderen Zweig zugeordnet, normalerweise einem Fernverfolgungszweig. Sie erstellen eine durch Ausführen
git branch --track <branchname> [<start-point>]
.Sie können anzeigen, welche Ihrer lokalen Niederlassungen Niederlassungen verfolgen, indem Sie
git branch -vv
:An der Ausgabe dieses Befehls können Sie erkennen, dass der lokale Zweig
master
den Fernverfolgungszweig verfolgtorigin/master
und der lokale Zweignew-feature
nichts verfolgt.Eine andere Möglichkeit, um zu sehen, welche Zweige Zweige verfolgen, besteht darin, einen Blick darauf zu werfen
.git/config
.Das Verfolgen lokaler Niederlassungen ist nützlich. Mit ihnen können Sie
git pull
undgit push
ohne Angabe des zu verwendenden Upstream-Zweigs ausführen . Wenn der Zweig nicht für die Verfolgung eines anderen Zweigs eingerichtet ist, wird folgende Fehlermeldung angezeigt:2. Remote-Tracking-Zweige (noch auf Ihrem Computer)
Sie können eine Liste aller Remote-Tracking-Zweige auf Ihrem Computer anzeigen, indem Sie Folgendes ausführen
git branch -r
:Jeder Remote-Tracking-Zweig hat eine Datei unter
.git/refs/<remote>/
:Stellen Sie sich Ihre Remote-Tracking-Zweige als Ihren lokalen Cache für das vor, was die Remote-Computer enthalten. Sie können Ihre Remote-Tracking-Zweige mit aktualisieren, indem Sie
git fetch
diesegit pull
hinter den Kulissen verwenden.Obwohl alle Daten für einen Remote-Tracking-Zweig lokal auf Ihrem Computer gespeichert sind (wie ein Cache), wird er nie als lokaler Zweig bezeichnet. (Zumindest würde ich es nicht so nennen!) Es wird nur ein Remote-Tracking-Zweig genannt.
Zweige auf einem Remote-Computer:
Sie können alle Remote-Zweige (dh die Zweige auf dem Remote-Computer) anzeigen, indem Sie Folgendes ausführen
git remote show <remote>
:Dieser
git remote
Befehl fragt den Remotecomputer über das Netzwerk nach seinen Zweigen ab. Die Remote-Tracking-Zweige auf Ihrem lokalen Computer werden nicht aktualisiert, verwendetgit fetch
odergit pull
dafür.In der Ausgabe können Sie alle auf dem Remote-Computer vorhandenen Zweige anzeigen, indem Sie unter der Überschrift "Remote-Zweige" nachsehen (als "veraltet" gekennzeichnete Zeilen ignorieren).
Wenn Sie sich am Remotecomputer anmelden und das Repository im Dateisystem finden könnten, könnten Sie sich alle Zweige unter ansehen
refs/heads/
.Spickzettel:
So löschen Sie einen lokalen Zweig, unabhängig davon, ob er verfolgt oder nicht verfolgt wird, sicher:
So löschen Sie einen lokalen Zweig, unabhängig davon, ob er verfolgt oder nicht verfolgt wird:
So löschen Sie einen Remote-Tracking-Zweig:
So erstellen Sie einen neuen lokalen Non-Tracking-Zweig:
So erstellen Sie einen neuen lokalen Tracking-Zweig: (Beachten Sie, dass das Flag automatisch eingeschlossen wird , wenn
<start-point>
es angegeben ist und ein Remote-Tracking-Zweig ist.)origin/foobar
--track
Beispiel:
So löschen Sie einen Zweig auf einem Remotecomputer:
So löschen Sie alle veralteten Remote-Tracking-Zweige, dh die entsprechenden Zweige auf dem Remote-Computer sind nicht mehr vorhanden:
Möglicherweise haben Sie bemerkt, dass Sie in einigen Befehlen
<remote>/<branch>
und anderen Befehlen ,<remote> <branch>
. Beispiele:git branch origin/hello-kitty
undgit push --delete origin hello-kitty
.Es mag willkürlich erscheinen, aber es gibt eine einfache Möglichkeit, sich daran zu erinnern, wann ein Schrägstrich und wann ein Leerzeichen verwendet werden muss. Wenn Sie einen Schrägstrich verwenden, beziehen Sie sich auf einen Zweig mit Remoteverfolgung auf Ihrem eigenen Computer, während Sie sich bei Verwendung eines Speicherplatzes tatsächlich mit einem Zweig auf einem Remotecomputer über das Netzwerk befassen.
quelle
Lokale Niederlassung:
Ein Zweig auf Ihrem Computer, in dem Sie arbeiten und Commits hinzufügen können. Sie können diese Zweige mit auflisten
git branch
.Lokale Niederlassung (mit Tracking):
Ein gewöhnlicher lokaler Zweig, der so konfiguriert ist, dass er einem entfernten Zweig entspricht. Dies hat benfits wie die Fähigkeit,
git pull
undgit push
ohne das Repository und Zweignamen angeben. Durch die Nachverfolgung werden Sie auch darübergit status
informiert, wenn sich Ihre Niederlassung vor oder hinter der Fernbedienung befindet.Remote Branch:
Einfach eine Verzweigung in einem Remote-Repository - normalerweise auf einem Server wie GitHub usw.
Remote Tracking Branch:
Eine lokale Kopie eines Remote-Zweigs. Dieser Zweig sollte niemals bearbeitet werden. Ihr Zweck ist es, den aktuellen Status einer entfernten Niederlassung zu verfolgen. Remote-Tracking-Zweige können mit angezeigt werden
git branch -r
und sehen normalerweise so ausorigin/master
(Repo-Name gefolgt von einem Schrägstrich gefolgt vom Zweignamen). Durch Ausführengit fetch
werden die Remote-Tracking-Zweige aktualisiert, um den Status der entsprechenden Remote-Zweige wiederzugeben.git branch -avv
ist mein persönlicher Favorit, um einen schnellen Überblick darüber zu erhalten, welche Zweige sich auf meinem Computer befinden, welche Zweige sich auf der Fernbedienung befinden und welches Commit jeweils aktuell ist. Der-a
Teil gibt an, dass alle Zweige angezeigt werden sollen (remote und lokal). Diev
's am Ende stehen für ausführlich (es zeigt den letzten Commit-Hash und die letzte Nachricht). Vielen Dank an @Flimm für den Hinweis, dass der zweitev
Informationen darüber hinzufügt, welcher lokale Zweig welche Fernbedienung verfolgt.quelle