Frage Wie überprüfe ich einen entfernten Git-Zweig?


Jemand hat einen Zweig genannt test mit git push origin test zu einem gemeinsamen Repository. Ich kann den Zweig mit sehen git branch -r.

Jetzt versuche ich die Fernbedienung zu überprüfen test Ast.

Ich habe es versucht:

  • git checkout test was tut nichts

  • git checkout origin/test gibt * (no branch). Das ist verwirrend. Wie kann ich auf "kein Zweig" sein?

Wie überprüfe ich einen entfernten Git-Zweig?


5300
2017-11-23 14:23


Ursprung


Antworten:


Aktualisieren

Jakubs Antwort verbessert dies tatsächlich. Mit Git Versionen ≥ 1.6.6 können Sie einfach tun:

git fetch
git checkout test

(User masukomi weist darauf hin git checkout test funktioniert nicht in modernen Git, wenn Sie mehrere Fernbedienungen haben. In diesem Fall verwenden git checkout -b test <name of remote>/test).

Alte Antwort

Bevor Sie anfangen können, lokal in einem entfernten Zweig zu arbeiten, müssen Sie ihn wie in den Antworten unten beschrieben abrufen.

Um einen Zweig zu holen, müssen Sie einfach:

git fetch origin

Dadurch werden alle Remote-Zweige für Sie abgerufen. Sie können die Filialen zum Auschecken mit folgenden Optionen sehen:

git branch -v -a

Mit den Remote-Zweigstellen in der Hand müssen Sie nun die für Sie interessante Niederlassung auschecken und eine lokale Arbeitskopie erstellen:

git checkout -b test origin/test

7346
2017-11-23 14:26



Randnotiz: Mit modernem Git (> = 1.6.6), können Sie nur verwenden

git checkout test

(Beachte, dass es "Test" ist, nicht "Ursprung / Test"), um Magie auszuführen DWIM-mery und erstellen lokalen Zweig "Test" für Sie, für die Upstream wäre Remote-Tracking-Zweig "Herkunft / Test".


Das * (no branch) im git branch Ausgabe bedeutet, dass Sie sich auf einem unbenannten Zweig befinden, im so genannten "Abgelösten HEAD" -Zustand (HEAD zeigt direkt auf Commit und ist kein symbolischer Verweis auf einen lokalen Zweig). Wenn Sie in diesem unbenannten Zweig einige Commits durchgeführt haben, können Sie immer eine lokale Abzweigung des aktuellen Commits erstellen:

git checkout -b test HEAD

1088
2017-11-24 00:17



In diesem Fall möchten Sie wahrscheinlich eine lokale erstellen test Zweig, der die Fernbedienung verfolgt test Ast:

$ git branch test origin/test

In früheren Versionen von git, du brauchst ein explizites --track Option, aber das ist jetzt der Standard, wenn Sie von einem Remote-Zweig abzweigen.


475
2017-11-23 14:27



Akzeptierte Antwort nicht für dich arbeiten?

Während die erste und ausgewählte Antwort technisch ist richtigEs besteht die Möglichkeit, dass Sie noch nicht alle Objekte und Refs aus dem Remote-Repository abgerufen haben. Wenn dies der Fall ist, erhalten Sie den folgenden Fehler:

$ git checkout -b remote_branch origin/remote_branch

fatal: git checkout: Das Aktualisieren von Pfaden ist nicht mit dem Wechseln von Zweigen kompatibel.
  Haben Sie vorgehabt, 'Herkunft / Remote_branch' auszufüllen, was nicht als Commit gelöst werden kann?

Lösung

Wenn Sie diese Nachricht erhalten, müssen Sie zuerst a git fetch origin woher origin ist der Name des Remote-Repositorys vor dem Ausführen git checkout remote_branch. Hier ist ein vollständiges Beispiel mit Antworten:

$ git fetch origin
remote: Counting objects: 140, done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 69 (delta 36), reused 66 (delta 33)
Unpacking objects: 100% (69/69), done.
From https://github.com/githubuser/repo-name
   e6ef1e0..5029161  develop    -> origin/develop
 * [new branch]      demo       -> origin/demo
   d80f8d7..359eab0  master     -> origin/master

$ git checkout demo
Branch demo set up to track remote branch demo from origin.
Switched to a new branch 'demo'

Wie Sie sehen können, läuft git fetch origin Wir haben alle Remote-Zweigstellen abgerufen, die wir noch nicht für die Verfolgung auf unserem lokalen Computer eingerichtet haben. Von dort, da wir jetzt einen Verweis auf die Remote-Niederlassung haben, können wir einfach laufen git checkout remote_branch und wir werden die Vorteile des Remote-Tracking nutzen.


390
2017-12-07 20:52



Ich habe die obige Lösung versucht, aber es hat nicht funktioniert. Probieren Sie es aus, es funktioniert:

git fetch origin 'remote_branch':'local_branch_name'

Dadurch wird der Remote-Zweig abgerufen und ein neuer lokaler Zweig (falls noch nicht vorhanden) mit dem Namen erstellt local_branch_nameund verfolgen Sie den Remote darin.


175
2017-10-18 05:55



Dieser Wille DWIM für eine entfernte nicht benannte Herkunft (Dokumentation):

$ git checkout -t remote_name/remote_branch

Um eine neue Fernbedienung hinzuzufügen, müssen Sie zuerst Folgendes tun:

$ git remote add remote_name location_of_remote
$ git fetch remote_name

Der erste sagt Git die Fernbedienung existiert, der zweite bekommt die Commits.


100
2018-04-27 22:37



Benutzen:

git checkout -b <BRANCH-NAME> <REMOTE-NAME>/<BRANCH-NAME>

Andere Antworten funktionieren nicht mit modernen Git in meinem gutartigen Fall. Sie müssen möglicherweise zuerst ziehen, wenn der Remote-Zweig neu ist, aber ich habe diesen Fall nicht überprüft.


89
2018-02-21 10:58



Um ein Git-Repository zu klonen, tun Sie Folgendes:

git clone <either ssh url /http url>

Der obige Befehl überprüft alle Zweige, aber nur die master Zweig wird initialisiert. Wenn Sie die anderen Zweige auschecken möchten, tun Sie Folgendes:

git checkout -t origin/future_branch (for example)

Dieser Befehl überprüft den Remote-Zweig und der Name Ihres lokalen Zweiges ist derselbe wie der Remote-Zweig.

Wenn Sie den Namen Ihrer lokalen Zweigstelle beim Auschecken überschreiben möchten:

git checkout -t -b enhancement origin/future_branch

Jetzt ist Ihr lokaler Zweigname enhancement, aber Ihr entfernter Zweigname ist future_branch.

Dokumentation


45
2018-01-21 10:04



OK, die Antwort ist einfach ... Du siehst grundsätzlich den Zweig, aber du hast noch keine lokale Kopie ...

Du brauchst fetch die Branche...

Sie können einfach den Zweig abholen und dann zur Kasse gehen. Verwenden Sie dazu den folgenden Befehl:

git fetch && git checkout test

Ich habe auch das Bild unten für Sie erstellt, um die Unterschiede zu teilen, schauen Sie, wie fetch funktioniert und auch wie es anders ist pull:

git fetch


41
2017-09-05 14:20



Du kannst es versuchen

git fetch remote
git checkout --track -b local_branch_name origin/branch_name

oder

git fetch
git checkout -b local_branch_name origin/branch_name

27
2018-03-24 13:11