Wie prüfe ich einen entfernten Git-Zweig?

Jemand hat einen Zweig mit dem Namen test mit git push origin test in ein gemeinsames Repository geklickt. Ich sehe einen Zweig mit git branch -r .

Jetzt versuche ich, den Remote-Branch- test .

Ich habe versucht:

  • git checkout test macht nichts

  • git checkout origin/test ergibt * (no branch) . Das ist verwirrend. Wie kann ich auf "keine Branche" sein?

Wie prüfe ich einen entfernten Git-Zweig?

5758
23 нояб. von Juri Glass am 23. November eingestellt 2009-11-23 17:23 09 um 17:23 2009-11-23 17:23
@ 26 Antworten

Aktualisieren

Yakubs Antwort verbessert das tatsächlich. Mit Git-Versionen ≥ 1.6.6 mit einer Fernbedienung können Sie einfach:

 git fetch git checkout test 

Wie der Benutzer masukomi in dem Kommentar feststellt, funktioniert git checkout test NICHT in modernen Git, wenn Sie mehrere Konsolen haben. In diesem Fall verwenden Sie

 git checkout -b test <name of remote>/test 

oder eine Kurzform

 git checkout -t <name of remote>/test 

Alte Antwort

Bevor Sie mit einem Remote-Zweig mit der lokalen Arbeit beginnen können, müssen Sie diese erhalten, wie in den Antworten unten angegeben.

Um einen Zweig zu bekommen, müssen Sie nur:

 git fetch origin 

Dies bringt Ihnen alle entfernten Zweige. Sie können die verfügbaren Filialen sehen mit:

 git branch -v -a 

Jetzt, da Sie Remote-Zweigstellen haben, müssen Sie die Zweigstelle, die Sie interessieren, überprüfen, indem Sie eine lokale Arbeitskopie vorlegen:

 git checkout -b test origin/test 
7947
23 нояб. Die Antwort wird hallski am 23. November gegeben. 2009-11-23 17:26 09 um 17:26 Uhr 2009-11-23 17:26 Uhr

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

 git checkout test 

(Beachten Sie, dass dies 'test' und nicht 'origin / test' ist), um den magischen DWIM -mery auszuführen und für Sie einen lokalen Zweig 'test' zu erstellen, für den der Upstream die entfernte Spur von "origin / test" sein würde.

border=0

Die Ausgabe * (no branch) in git branch bedeutet, dass Sie sich in einem nicht benannten Zweig im so genannten "getrennten KOPF" -Zustand befinden (HEAD bezieht sich direkt auf das Festschreiben und ist keine symbolische Verbindung zu einem lokalen Zweig). Wenn Sie in diesem nicht benannten Zweig einige Commits gemacht haben, können Sie immer einen lokalen Zweig mit dem aktuellen Commit erstellen:

 git checkout -b test HEAD 
1147
24 нояб. Antwort von Jakub Narębski 24. November 2009-11-24 03:17 09 um 03:17 2009-11-24 03:17

In diesem Fall möchten Sie wahrscheinlich einen lokalen test erstellen, der den entfernten test :

 $ git branch test origin/test 

In früheren Versionen von git eine explizite Option --track erforderlich. Dies ist jetzt die Standardeinstellung, wenn Sie einen entfernten Zweig verzweigen.

508
23 нояб. Die Antwort wird am 23. November gegeben. 2009-11-23 17:27 09 um 17:27 2009-11-23 17:27

Die akzeptierte Antwort funktioniert nicht für Sie?

Während die erste und ausgewählte Antwort technisch korrekt ist, besteht die Möglichkeit, dass Sie noch nicht alle Objekte und Links vom Remote-Repository erhalten haben. Wenn ja, erhalten Sie folgende Fehlermeldung:

 $ git checkout -b remote_branch origin/remote_branch 

fatal: git checkout: Aktualisierungspfade sind mit dem Wechseln der Zweige nicht kompatibel.
Haben Sie vor, "origin / remote_branch" zu überprüfen, was nicht als Commit aufgelöst werden kann?

Lösung

Wenn Sie diese Nachricht erhalten, müssen Sie zunächst git fetch origin git checkout remote_branch , wobei origin der Name des Remote-Repositorys ist, bevor Sie git checkout remote_branch . Hier ist ein vollständiges Beispiel mit den 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, haben wir, wenn wir git fetch origin extrahierten entfernten Zweige ausführen, noch kein Tracking auf unserem lokalen Rechner konfiguriert. Da wir nun eine Verbindung zu einem Remote-Zweig haben, können Sie git checkout remote_branch einfach ausführen und die Vorteile des Remote-Tracking nutzen.

421
07 дек. Antwort von Corey Ballou 07 Dez 2012-12-07 23:52 '12 um 23:52 Uhr 2012-12-07 23:52 Uhr

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

 git fetch origin 'remote_branch':'local_branch_name' 

Dies führt zum entfernten Zweig und erstellt einen neuen lokalen Zweig (sofern noch nicht vorhanden) mit dem Namen local_branch_name und verfolgt diesen gelöscht.

208
18 окт. Antwort von Sahil Kalra 18 Okt. 2013-10-18 08:55 '13 um 8:55 2013-10-18 08:55

Dies ist das DWIM für den unbenannten Remote-Namen ( Dokumentation ):

 $ git checkout -t remote_name/remote_branch 

Um eine neue Fernbedienung hinzuzufügen, müssen Sie folgende Schritte ausführen:

 $ git remote add remote_name location_of_remote $ git fetch remote_name 

Der erste teilt Git den Fernzugriff mit, der zweite erhält Commits.

104
28 апр. beantwortet tacaswell 28 Apr 2012-04-28 01:37 '12 at 1:37 2012-04-28 01:37

Verwenden:

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

Andere Antworten funktionieren mit modernem Git in meinem gutartigen Fall nicht. Sie müssen möglicherweise zuerst migrieren, wenn der entfernte Zweig neu ist, aber ich habe diesen Fall nicht geprüft.

98
21 февр. Die Antwort wird von Matanster am 21. Februar gegeben. 2016-02-21 13:58 '16 um 13:58 Uhr 2016-02-21 13:58

Nun , die Antwort ist einfach ... Sie sehen im Grunde einen Zweig, aber Sie haben noch keine lokale Kopie! ...

Sie müssen fetch Zweig fetch ...

Sie können einfach eine Bestellung empfangen und dann unter Verwendung des einzeiligen Befehls in einem Zweig platzieren, um dies zu tun:

 git fetch  git checkout test 

Ich habe auch unten ein Bild erstellt, damit Sie Ihre Unterschiede mit anderen teilen können, um zu sehen, wie fetch funktioniert und wie man es pull :

2019

05 сент. Die Antwort wird gegeben Alireza 05 Sep. 2017-09-05 17:20 '17 um 17:20 Uhr 2017-09-05 17:20

Um das Git-Repository zu klonen, führen Sie Folgendes aus:

 git clone <either ssh url /http url> 

Der obige Befehl überprüft alle Zweige, aber nur der Hauptzweig wird initialisiert. Wenn Sie andere Zweige prüfen möchten, gehen Sie folgendermaßen vor:

 git checkout -t origin/future_branch (for example) 

Dieser Befehl überprüft die entfernte Verzweigung, und der Name Ihrer lokalen Verzweigung stimmt mit der entfernten Verzweigung überein.

Wenn Sie den Namen der lokalen Zweigstelle an der Kasse überschreiben möchten:

 git checkout -t -b enhancement origin/future_branch 

Jetzt ist der Name Ihrer lokalen Niederlassung eine enhancement , aber der Name Ihrer Remote-Niederlassung lautet future_branch .

Dokumentation

48
21 янв. Die Antwort wird gegeben Madhan Ayyasamy 21. Januar 2013-01-21 13:04 '13 um 13:04 2013-01-21 13:04

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 
31
24 марта '14 в 16:11 2014-03-24 16:11 Die Antwort wird uma 24. März 14 um 16:11 Uhr 2014-03-24 16:11 gegeben

Zunächst müssen Sie Folgendes tun:

git fetch # Wenn Sie den Namen des Zweigs nicht kennen

 git fetch origin branch_name 

Zweitens können Sie die entfernte Verzweigung zu Ihrem lokalen überprüfen:

 git checkout -b branch_name origin/branch_name 

-b erstellt aus dem ausgewählten entfernten Zweig einen neuen Zweig mit dem angegebenen Namen.

27
18 мая '17 в 16:55 2017-05-18 16:55 Die Antwort wird von Mohideen ibn Mohammed am 18. Mai 17 um 16:55 2017-05-18 16:55 gegeben

Teams

 git fetch --all git checkout -b <ur_new_local_branch_name> origin/<Remote_Branch_Name> 

sind gleich

  git fetch --all 

und dann

  git checkout -b fixes_for_dev origin/development 

Beide erstellen die latest fixes_for_dev aus der development

25
21 апр. die antwort wird von sreekumar gegeben 21 apr 2016-04-21 22:10 '16 um 22:10 Uhr 2016-04-21 22:10

Ich benutze den folgenden Befehl:

 git checkout --track origin/other_remote_branch 
23
06 сент. die antwort wird priyankvex 06 sep gegeben . 2017-09-06 17:41 17 um 17:41 Uhr 2017-09-06 17:41

Wenn sich der Zweig nicht auf einem entfernten origin , mache ich gerne Folgendes:

 $ git fetch $ git checkout -b second/next upstream/next 

Dadurch wird der next Zweig auf dem Remote- upstream Server in dem lokalen Zweig mit der Bezeichnung second/next . Dies bedeutet, dass wenn Sie bereits einen lokalen Zweig als nächsten haben, kein Konflikt entsteht.

 $ git branch -a * second/next remotes/origin/next remotes/upstream/next 
22
01 марта '13 в 13:00 2013-03-01 13:00 Die Antwort wird von Kris am 1. März 13 um 13:00 Uhr 2013-03-01 13:00 gegeben

git fetch git checkout your-branch-name

15
26 марта '14 в 10:00 2014-03-26 10:00 Die Antwort wird Inder Kumar Rathore am 26. März 14 um 10:00 Uhr 2014-03-26 10:00 gegeben

git branch -r besagt, dass der Name des Objekts ungültig ist, da der Name dieses Zweigs nicht in der Liste der lokalen Git-Zweige enthalten ist. Aktualisieren Sie Ihre lokale Zweigliste aus der Quelle mit:

 git remote update 

Versuchen Sie dann erneut, den entfernten Zweig zu überprüfen.

Es hat für mich funktioniert.

Ich glaube, dass git fetch in alle abgelegenen Äste zieht, was das ursprüngliche Poster nicht will.

15
06 июня '13 в 15:21 2013-06-06 15:21 Die Antwort wird von webdevguy am 6. Juni 13 um 15:21 2013-06-06 15:21 gegeben

Keine dieser Antworten funktionierte für mich. es hat funktioniert:

git checkout -b feature/branch remotes/origin/feature/branch

14
10 июля '18 в 5:11 2018-07-10 05:11 Die Antwort wird von brianyang am 10. Juli 18 um 05:11 Uhr 2018-07-10 05:11 gegeben

Der Befehl git remote show <origin name> zeigt eine Liste aller Zweige (einschließlich nicht verfolgter Zweige) an. Dann finden Sie den Namen des entfernten Zweigs, den Sie extrahieren möchten.

Beispiel:

 $ git remote show origin 

Gehen Sie folgendermaßen vor, um entfernte Zweige zu extrahieren:

 git fetch <origin name> <remote branch name>:<local branch name> git checkout <local branch name > (local branch name should the name that you given fetching) 

Beispiel:

 $ git fetch origin test:test $ git checkout test 
11
07 янв. Die Antwort wird von Thushan 07 Jan gegeben 2018-01-07 16:12 18 um 16:12 Uhr 2018-01-07 16:12

Andere Jungs und Mädchen geben Lösungen, aber vielleicht kann ich Ihnen sagen, warum.

git check test macht nichts

Does nothing ist nicht gleich, dass es doesn't work . Wenn Sie also in Ihrem Terminal "git checkout test" eingeben und die Eingabetaste drücken, wird die Meldung nicht angezeigt und es wird kein Fehler angezeigt. Ich Recht?

Wenn die Antwort ja ist, kann ich Ihnen den Grund nennen.

Der Grund ist, dass sich in Ihrem Baum eine Datei (oder ein Ordner) mit dem Namen "test" befindet.

Wenn git checkout xxx herausgefunden hat,

  • git betrachtet xxx als den Namen eines Zweigs, es gibt jedoch keinen Zweig namens test.
  • Dann glaubt Git, dass xxx der Weg ist, und glücklicherweise (oder leider) gibt es eine Datei namens test. Daher bedeutet git checkout xxx , alle Änderungen in der xxx Datei abzubrechen.
  • Wenn keine Datei mit dem Namen xxx , versucht Git, xxx nach einigen Regeln zu erstellen. Eine Regel besteht darin, eine Verzweigung mit dem Namen xxx anzulegen, wenn remotes/origin/xxx vorhanden ist.
8
10 июля '17 в 10:45 2017-07-10 10:45 Die Antwort ist oldman 10. Juli 17 um 10:45 2017-07-10 10:45 gegeben

Ich war in einer Situation festgefahren, in der der error: pathspec 'desired-branch' did not match any file(s) known to git. für alle oben genannten Angebote. Ich bin auf git Version 1.8.3.1.

Also hat es für mich funktioniert :

 git fetch origin desired-branch git checkout -b desired-branch FETCH_HEAD 

Die Erklärung dafür ist, dass mir aufgefallen ist, dass beim Abrufen einer entfernten Verzweigung diese in FETCH_HEAD ausgewählt wurde:

 $ git fetch origin desired-branch From github.com:MYTEAM/my-repo * branch desired-branch -> FETCH_HEAD 
7
11 окт. antworten alisa 11 Okt 2018-10-11 00:52 18 um 0:52 2018-10-11 00:52

Führen Sie einfach git checkout mit dem Namen des entfernten Zweigs aus. Git erstellt automatisch einen lokalen Zweig, der die entfernte Seite verfolgt:

 git fetch git checkout test 

Wenn dieser Zweigname jedoch in mehreren Konsolen gefunden wird, funktioniert er nicht, da Git nicht weiß, was er verwenden soll. In diesem Fall können Sie entweder verwenden:

 git checkout --track origin/test 

oder

 git checkout -b test origin/test 

In 2.19 untersuchte Git die Konfiguration von checkout.defaultRemote , in der beim Entfernen einer solchen Mehrdeutigkeit der Standardwert für die Fernsteuerung angegeben wird.

6
13 сент. Die Antwort wird von Eugene Yarmash am 13. September gegeben . 2018-09-13 15:21 '18 um 15:21 Uhr 2018-09-13 15:21 Uhr

Um neu erstellte Zweige zu erhalten

 git fetch 

Wechseln Sie zu einem anderen Zweig

 git checkout BranchName 
6
15 марта '18 в 11:49 2018-03-15 11:49 Die Antwort wird von Hasib Kamal am 15. März 1818 um 11:49 2018-03-15 11:49 gegeben

Sie können alle gelöschten Zweige mit dem folgenden Bash-Skript verfolgen:

 #!/bin/bash git fetch --all for branch in `git branch -r --format="%(refname:short)" | sed 's/origin\///'` do git branch -f --track "$branch" "origin/$branch" done 

Hier ist auch die einzeilige Version:

 git fetch --all; for branch in `git branch -r --format="%(refname:short)" | sed 's/origin\///'`; do git branch --track "$branch" "origin/$branch" ; done ; 
6
11 авг. Die Antwort wird von OzzyCzech 11 Aug gegeben. 2017-08-11 15:06 17 am 15:06 2017-08-11 15:06

Folgen Sie diesem Befehl, um einen leeren Ordner zu erstellen. Geben Sie es ein und verwenden Sie den folgenden Befehl:

 saifurs-Mini:YO-iOS saifurrahman$ git clone your_project_url Cloning into 'iPhoneV1'... remote: Counting objects: 34230, done. remote: Compressing objects: 100% (24028/24028), done. remote: Total 34230 (delta 22212), reused 15340 (delta 9324) Receiving objects: 100% (34230/34230), 202.53 MiB | 294.00 KiB/s, done. Resolving deltas: 100% (22212/22212), done. Checking connectivity... done. saifurs-Mini:YO-iOS saifurrahman$ cd iPhoneV1/ saifurs-Mini:iPhoneV1 saifurrahman$ git checkout 1_4_0_content_discovery Branch 1_4_0_content_discovery set up to track remote branch 1_4_0_content_discovery from origin. Switched to a new branch '1_4_0_content_discovery' 
2
01 янв. Die Antwort wird von Mehedi Hasan Jan 01 gegeben 2016-01-01 13:31 '16 am 13:31 2016-01-01 13:31

Holen Sie sich den Ursprung und überprüfen Sie den Zweig.

 git fetch origin  git checkout branch_name 
1
21 мая '18 в 14:33 2018-05-21 14:33 Die Antwort ist gegeben Pranav 21. Mai '18 um 14:33 2018-05-21 14:33

Wenn der Name des entfernten Zweigs mit Sonderzeichen beginnt, müssen Sie im Befehl checkout einfache Anführungszeichen verwenden. Andernfalls weiß git nicht, von welchem ​​Zweig Sie sprechen.

Ich habe beispielsweise versucht, einen entfernten Zweig mit dem Namen #9773 zu extrahieren, der Befehl funktionierte jedoch nicht ordnungsgemäß, wie in der folgenden Abbildung dargestellt:

2019

07 нояб. die antwort wird gegeben Ulysses Alves 07 nov. 2018-11-07 14:17 '18 um 14:17 Uhr 2018-11-07 14:17 Uhr

Weitere Fragen zu Tags oder Frage stellen