it-swarm-eu.dev

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

Jemand hat einen Zweig namens test mit git Push Origin test in ein freigegebenes Repository verschoben. Ich kann den Zweig mit git branch -r sehen.

Jetzt versuche ich, den Remote-Zweig test zu überprüfen.

Ich habe es versucht:

  • git checkout test was nichts tut

  • git checkout Origin/test gibt * (no branch). Welches ist verwirrend. Wie kann ich auf "no branch" sein?

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

6276
Juri Glass

Aktualisieren

Jakubs Antwort verbessert dies tatsächlich. Mit Git-Versionen ≥ 1.6.6 können Sie mit nur einer Fernbedienung Folgendes tun:

git fetch
git checkout test

Wie Benutzer masukomi in einem Kommentar betont, funktioniert git checkout test in modernen Git NICHT, wenn Sie mehrere Fernbedienungen haben. In diesem Fall verwenden

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

oder die Kurzschrift

git checkout -t <name of remote>/test

Alte Antwort

Bevor Sie lokal an einem Remote-Zweig arbeiten können, müssen Sie ihn wie in den folgenden Antworten beschrieben abrufen.

Um eine Filiale abzurufen, müssen Sie lediglich:

git fetch Origin

Dadurch werden alle Remote-Zweige für Sie abgerufen. Sie können die Filialen anzeigen, die zum Auschecken zur Verfügung stehen:

git branch -v -a

Mit den entfernten Zweigen in der Hand müssen Sie nun den Zweig auschecken, an dem Sie interessiert sind, und Ihnen eine lokale Arbeitskopie geben:

git checkout -b test Origin/test
8645
hallski

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

git checkout test

(Beachten Sie, dass es sich um 'Test' und nicht um 'Origin/Test' handelt.) Führen Sie magische DWIM - Aktionen aus, und erstellen Sie für Sie einen 'Test' für den lokalen Zweig, für den der Upstream ein Remote-Tracking-Zweig wäre. ' Herkunft/Test '.


Die Ausgabe * (no branch) in git branch bedeutet, dass Sie sich in einem unbenannten Zweig befinden, der sich im Status "Detached HEAD" befindet (HEAD zeigt direkt auf Commit und ist kein symbolischer Verweis auf einen lokalen Zweig). Wenn Sie einige Festschreibungen für diesen unbenannten Zweig vorgenommen haben, können Sie immer einen lokalen Zweig außerhalb des aktuellen Festschreibens erstellen:

git checkout -b test HEAD
1212
Jakub Narębski

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

$ git branch test Origin/test

In früheren Versionen von git haben Sie eine explizite --track -Option benötigt. Dies ist jetzt die Standardeinstellung, wenn Sie von einem Remote-Zweig abzweigen.

537
ndim

Akzeptierte Antwort funktioniert nicht bei Ihnen?

Während die erste und ausgewählte Antwort technisch korrekt ist , besteht die Möglichkeit, dass Sie noch nicht alle Objekte und Verweise aus dem Remote-Repository abgerufen haben. In diesem Fall erhalten Sie folgende Fehlermeldung:

$ git checkout -b remote_branch Origin/remote_branch

fatal: git checkout: Das Aktualisieren von Pfaden ist mit dem Wechseln von Zweigen nicht kompatibel.
Wollten Sie 'Origin/remote_branch' auschecken, das nicht als Commit aufgelöst werden kann?

Lösung

Wenn Sie diese Nachricht erhalten, müssen Sie zuerst einen git fetch Origin ausführen, wobei Origin der Name des Remote-Repositorys ist, bevor Sie git checkout remote_branch ausführen. 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, wurden durch Ausführen von git fetch Origin alle Remote-Zweige abgerufen, die wir noch nicht für die Verfolgung auf unserem lokalen Computer eingerichtet hatten. Von dort aus können wir einfach git checkout remote_branch ausführen, da wir jetzt einen Verweis auf den Remote-Zweig haben, und wir werden die Vorteile der Remote-Verfolgung nutzen.

453
Corey Ballou

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

git fetch Origin 'remote_branch':'local_branch_name'

Dadurch wird der entfernte Zweig abgerufen und ein neuer lokaler Zweig (falls noch nicht vorhanden) mit dem Namen local_branch_name erstellt, in dem der entfernte Zweig nachverfolgt wird.

236
Sahil kalra

Dies wird DWIM für eine Fernbedienung ohne Namen Origin ( documentation ):

$ git checkout -t remote_name/remote_branch

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

$ git remote add remote_name location_of_remote
$ git fetch remote_name

Der erste teilt Git mit, dass die Fernbedienung existiert, der zweite erhält die Commits.

106
tacaswell

Verwenden:

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

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

101
matanster

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

Sie müssen fetch den Zweig ...

Sie können den Zweig einfach abrufen und dann auschecken. Verwenden Sie dazu den folgenden einzeiligen Befehl:

git fetch && git checkout test

Ich habe auch das folgende Bild erstellt, damit Sie die Unterschiede teilen können. Schauen Sie sich an, wie fetch funktioniert und wie es sich von pull unterscheidet:

git fetch

81
Alireza

So klonen Sie ein Git-Repository:

git clone <either ssh url /http url>

Der obige Befehl checkt alle Zweige aus, aber nur der Zweig master wird initialisiert. Wenn Sie die anderen Filialen auschecken möchten, gehen Sie wie folgt vor:

git checkout -t Origin/future_branch (for example)

Mit diesem Befehl wird der Remote-Zweig ausgecheckt, und der Name Ihres lokalen Zweigs ist mit dem Namen des Remote-Zweigs identisch.

Wenn Sie Ihren lokalen Filialnamen an der Kasse überschreiben möchten:

git checkout -t -b enhancement Origin/future_branch

Jetzt lautet Ihr lokaler Filialname enhancement, aber Ihr entfernter Filialname lautet future_branch.

Dokumentation

53
Madhan Ayyasamy

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
35
uma

Zunächst müssen Sie Folgendes tun:

git fetch # Wenn Sie den Filialnamen nicht kennen

git fetch Origin branch_name

Zweitens können Sie die Remote-Verzweigung in Ihre lokale überprüfen, indem Sie:

git checkout -b branch_name Origin/branch_name

-b erstellt einen neuen Zweig im angegebenen Namen von Ihrem ausgewählten entfernten Zweig.

30

Befehle

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 erzeugen einen latest fixes_for_dev aus development

28
sreekumar

Ich benutze den folgenden Befehl:

git checkout --track Origin/other_remote_branch
26
priyankvex

Wenn sich der Zweig auf einer anderen als der Origin -Remote befindet, möchte ich Folgendes tun:

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

Dadurch wird der Zweig next auf dem upstream Remote-Eingang in einen lokalen Zweig mit dem Namen second/next ausgecheckt. Das heißt, wenn Sie bereits einen lokalen Zweig mit dem Namen next haben, tritt kein Konflikt auf.

$ git branch -a
* second/next
  remotes/Origin/next
  remotes/upstream/next
24
Kris

keine dieser Antworten hat für mich funktioniert. das hat funktioniert:

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

17
brianyang

git branch -r gibt an, dass der Objektname ungültig ist, da dieser Zweigname nicht in der lokalen Zweigliste von Git enthalten ist. Aktualisieren Sie Ihre lokale Branchenliste von Origin mit:

git remote update

Versuchen Sie dann erneut, Ihren Remote-Zweig auszulesen.

Das hat bei mir funktioniert.

Ich glaube, git fetch zieht alle entfernte Zweige ein, was das ursprüngliche Poster nicht wollte.

16
webdevguy

git fetch && git checkout your-branch-name

15

Ich war in einer Situation festgefahren, als ich error: pathspec 'desired-branch' did not match any file(s) known to git. für alle obigen Vorschläge sah. Ich bin auf Git-Version 1.8.3.1.

Also das hat bei mir funktioniert:

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

Die Erklärung dahinter ist, dass mir aufgefallen ist, dass der entfernte Zweig beim Abrufen nach FETCH_HEAD abgerufen wurde:

$ git fetch Origin desired-branch
From github.com:MYTEAM/my-repo
    * branch            desired-branch -> FETCH_HEAD
15
alisa

Führen Sie einfach _git checkout_ mit dem Namen des Remote-Zweigs aus. Git wird automatisch erstellen einen lokalen Zweig, der den entfernten Zweig verfolgt:

_git fetch
git checkout test
_

Wenn dieser Filialname jedoch in mehreren Remote-Computern vorhanden ist, funktioniert dies nicht, da Git nicht weiß, welchen er verwenden soll. In diesem Fall können Sie entweder:

_git checkout --track Origin/test
_

oder

_git checkout -b test Origin/test
_

In 2.19 lernte Git die checkout.defaultRemote -Konfiguration, die eine Fernbedienung angibt, die standardmäßig verwendet wird, wenn eine solche Mehrdeutigkeit behoben wird.

13
Eugene Yarmash

Der Befehl git remote show <Origin name> listet alle Zweige auf (einschließlich nicht verfolgter Zweige). Dann können Sie den Namen des entfernten Zweigs finden, den Sie abrufen müssen.

Beispiel:

$ git remote show Origin

Gehen Sie folgendermaßen vor, um entfernte Zweige abzurufen:

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
Thushan

Andere Jungs und Mädels geben die Lösungen, aber vielleicht kann ich dir sagen warum.

git-Checkout-Test, der nichts tut

Does nothing ist nicht gleich doesn't work, also schätze ich, wenn Sie in Ihr Terminal 'git checkout test' eingeben und die Eingabetaste drücken, wird keine Meldung angezeigt und es tritt kein Fehler auf. Habe ich recht?

Wenn die Antwort "Ja" lautet, kann ich Ihnen die Ursache nennen.

Die Ursache ist, dass sich in Ihrem Arbeitsbaum eine Datei (oder ein Ordner) mit dem Namen 'test' befindet.

Wenn git checkout xxx analysiert,

  1. Git betrachtet xxx zunächst als einen Zweignamen, aber es gibt keinen Zweig namens test.
  2. Dann denkt Git, dass xxx ein Pfad ist, und zum Glück (oder leider) gibt es eine Datei namens test. So bedeutet git checkout xxx, dass alle Änderungen in der xxx -Datei verworfen werden.
  3. Wenn es auch keine Datei mit dem Namen xxx gibt, versucht Git, die xxx nach bestimmten Regeln zu erstellen. Eine der Regeln ist das Erstellen eines Zweigs mit dem Namen xxx, wenn remotes/Origin/xxx vorhanden ist.
8
oldman

m neu erstellte Zweige zu erhalten

git fetch

m in einen anderen Zweig zu wechseln

git checkout BranchName
7
Hasib Kamal

Sie können mit dem folgenden Bash-Skript alle Remote-Zweige 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 eine 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
OzzyCzech

Holen Sie sich von der Fernbedienung und überprüfen Sie den Zweig.

git fetch <remote_name> && git checkout <branch_name> 

Z.B.:

git fetch Origin && git Checkout-Funktion/XYZ-1234-Add-Warnungen

6
Pranav

Verwenden Sie fetch, um alle Ihre Fernbedienung zu ziehen

   git fetch --all

So listen Sie entfernte Zweige auf:

   git branch -r

Um alle Ihre Filialen aufzulisten

   git branch -l
   >>outpots like-
     * develop
       test
       master

So checken Sie einen Zweig aus/ändern ihn

   git checkout master
2
Nasir Khan

Wenn der Name des entfernten Zweigs mit Sonderzeichen beginnt, müssen Sie ihn im Checkout-Befehl in einfache Anführungszeichen setzen, da git sonst nicht weiß, um welchen Zweig es sich handelt.

Ich habe zum Beispiel versucht, einen entfernten Zweig mit dem Namen #9773 auszuchecken, aber der Befehl hat nicht richtig funktioniert, wie in der folgenden Abbildung gezeigt:

enter image description here

Aus irgendeinem Grund habe ich mich gefragt, ob das scharfe Symbol (#) etwas damit zu tun haben könnte, und dann habe ich versucht, den Zweignamen in einfache Anführungszeichen zu setzen, z. B. '#9773' anstatt nur #9773, und es hat funktioniert fein.

$ git checkout -b '#9773' Origin/'#9773'
1
Ulysses Alves

Bitte folgen Sie dem Befehl, um einen leeren Ordner zu erstellen. Gib das ein und benutze diesen 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'
1
Mehedi Hasan