Wie checke ich einen Remote-Git-Zweig aus?

6713

Jemand drückte auf einen Zweig namens testmit git push origin testauf einem gemeinsamen Repository. Ich kann den Zweig mit sehen git branch -r.

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

Ich habe es versucht:

  • git checkout test was nichts tut

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

Wie checke ich einen Remote-Git-Zweig aus?

Juri Glass
quelle
9
@inger Aber es beinhaltet nicht die Möglichkeit, den neuen lokalen Zweig umzubenennen (wenn Sie später --set-upstream setzen und die Namenskonsistenz beibehalten möchten)
fachexot
15
Ich denke, dieser Thread ist nicht hilfreich. Nichts scheint zu funktionieren, die ursprüngliche Frage scheint in vielen Antworten verloren gegangen zu sein. Ich habe jedes Wort gelesen, alles unten ausprobiert und habe keine Ahnung, wie ich das tun soll, was das OP tun will.
Tony Ennis
6
Git-Befehle sind zunächst nicht intuitiv. Fügen Sie die Änderungen, die mit den neuesten Versionen eingeführt wurden, zum Mix hinzu, und Sie haben diese Seite ...
Christophe Roussy
14
Ich habe das Gefühl, ich nehme verrückte Pillen. Ich versuche, einen Zweig von einem auszuchecken upstream, nicht nur origin, und jede empfohlene Antwort ist nicht im entferntesten hilfreich (Wortspiel beabsichtigt). BEARBEITEN - entschuldigen Sie, die Vielzahl der Vorschläge in den Top-2-Antworten war nutzlos. 3. one ( git branch test origin/test) funktioniert.
Ich bin
4
Möglicherweise haben Sie eine Datei mit dem Namen "test" in Ihrem Arbeitsbaum. Weitere Informationen finden Sie unter stackoverflow.com/a/45006389/792416 .
Oldman

Antworten:

9151

Aktualisieren

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

git fetch
git checkout test

Wie Benutzer masukomi in einem Kommentar betont, git checkout testfunktioniert es in modernem 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 Antworten unten angegeben abrufen.

Um einen Zweig abzurufen, müssen Sie lediglich:

git fetch origin

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

git branch -v -a

Mit den vorhandenen Remote-Filialen müssen Sie nun die Filiale überprüfen, an der Sie interessiert sind, und eine lokale Arbeitskopie erhalten:

git checkout -b test origin/test
Hallski
quelle
398
Um dies zu erweitern: Mit git können Sie nicht an den Zweigen anderer Personen arbeiten. Sie können nur alleine arbeiten. Wenn Sie also zu einem Zweig eines anderen hinzufügen möchten, müssen Sie eine eigene "Kopie" dieses Zweigs erstellen, wie es der obige Befehl tut (nun, er erstellt Ihren Zweig und checkt ihn auch aus).
Dan Moulding
139
Wenn es sich um einen neuen Remote-Zweig handelt, müssen Sie dies möglicherweise git fetchvorher tun, damit git davon Kenntnis hatorigin/test
Neil Sarkar
56
... und Sie würden dies tun mitgit fetch origin test
Andrew
22
Fehler: "git checkout: Das Aktualisieren von Pfaden ist nicht mit dem Wechseln von Zweigen kompatibel. Wollten Sie auschecken, origin/testwas nicht als Commit aufgelöst werden kann?"
Xeoncross
85
git checkout testfunktioniert NICHT in modernen Git, wenn Sie mehrere Fernbedienungen haben, die den gleichen Zweignamen haben . Es kann nicht wissen, welches zu verwenden ist.
Masukomi
1256

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

git checkout test

(Beachten Sie, dass es 'Test' ist, nicht 'Ursprung / Test'), um eine magische DWIM-Serie durchzuführen und einen lokalen Zweig 'Test' für Sie zu erstellen, für den der Upstream-Tracking-Zweig 'Ursprung / Test' vorverfolgt werden würde.


Die * (no branch)in git branchAusgabemitteln , dass Sie auf ungenannten Zweig, in so genannten „abgelöst HEAD“ Zustand (HEAD Punkte direkt zu begehen, und ist nicht symbolisch Bezug auf einigen lokalen Zweigen). Wenn Sie für diesen unbenannten Zweig einige Commits vorgenommen haben, können Sie immer einen lokalen Zweig außerhalb des aktuellen Commits erstellen:

git checkout -b test HEAD

** BEARBEITEN (vom Herausgeber nicht vom Autor) **

Ich habe unten einen Kommentar gefunden, der diese Antwort zu modernisieren scheint:

@Dennis: Git-Checkout, zum Beispiel Git-Checkout-Ursprung / Testergebnisse in getrenntem HEAD / unbenanntem Zweig, während Git-Checkout-Test oder Git-Checkout -b-Testursprung / Testergebnisse im lokalen Branchentest (mit Remote-Tracking-Zweigursprung / -test als Upstream) ) - Jakub Narębski 9. Januar 14 um 8:17 Uhr

Betonung git checkout origin/test

Jakub Narębski
quelle
33
Es ist nicht überraschend, aber diese Version wurde in den letzten Jahren veröffentlicht. Wenn Sie diese Syntax kennen, können Sie viel Zeit sparen, da immer noch viele alte Dokumentations- und Kommentarthreads im Umlauf sind, die die ältere Methode dafür vorschlagen.
Curtis
10
"modern git" - für die Aufzeichnung (ungefähr) auf welche Version beziehen Sie sich? Manchmal müssen wir an Systemen arbeiten, auf denen ältere Distributionen ausgeführt werden.
Craig McQueen
5
"moderner Git" in diesem Zusammenhang ist Git 1.6.6
Bobby Norton
10
@aidan Wenn du eine Antwort wie diese bekommst error: pathspec 'branch_name' did not match any file(s) known to git., solltest du zuerst einen Git-Fetch machen.
Dennis
6
Mit git Version 1.8.3.msysgit.0 und das funktioniert nicht für mich - stimmte nicht mit Dateien überein, die git bekannt sind - Ich habe viele Git-Abrufe gemacht
PandaWood
564

In diesem Fall möchten Sie wahrscheinlich einen lokalen testZweig erstellen, der den Remote- testZweig verfolgt:

$ git branch test origin/test

In früheren Versionen von gitbrauchten Sie eine explizite --trackOption, aber dies ist jetzt die Standardeinstellung, wenn Sie von einer Remote-Verzweigung abzweigen.

ndim
quelle
15
Dadurch wird eine lokale Verzweigung erstellt, ohne zu dieser zu wechseln.
Alex Skrypnyk
2
Obwohl ich fatal wurde: Mehrdeutiger Objektname: 'origin / dev' - wo ein Zweig 'dev' am Ursprung definitiv existiert - aber ich hatte versehentlich einen Zweig namens "origin / dev" auf meinem Computer erstellt (in meinen vorherigen dummen Versuchen um das richtig zu machen, kein Zweifel) ...
autsch
1
Dies hat mir den Fehlerfehler gegeben: Einige Refs konnten nicht auf einen Hinweis verschoben werden: Aktualisierungen wurden abgelehnt, da sich hinter dem Remote-Hinweis ein Gegenstück befindet: Gegenstück. Schauen Sie sich diesen Zweig an und führen Sie den Hinweis für Remote-Änderungen zusammen: (z. B. 'git pull'), bevor Sie erneut drücken. Hinweis: Weitere Informationen finden Sie im 'Hinweis zum schnellen Vorlauf' in 'git push --help'.
Pal4life
475

Akzeptierte Antwort funktioniert bei Ihnen nicht?

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

$ git checkout -b remote_branch origin/remote_branch

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

Lösung

Wenn Sie diese Meldung erhalten, müssen Sie zunächst ein tun , git fetch originwo originist der Name des Remote - Repository vor der Ausführung 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, wurden beim Ausführen git fetch originalle Remote-Zweige abgerufen , die wir noch nicht für die Verfolgung auf unserem lokalen Computer eingerichtet hatten. Von dort aus können wir, da wir jetzt einen Verweis auf den Remote-Zweig haben, einfach ausgeführt werden git checkout remote_branchund die Vorteile der Remote-Verfolgung nutzen.

Corey Ballou
quelle
2
Ich werde einen Hinweis hinzufügen, wenn Sie lokal einen separaten Zweig haben: Stellen Sie sicher, dass Sie diesen mit dem Remote-Repo verknüpft haben, indem Sie 'git remote add origin [the_path_to_your_repo / repo_name.git]' verwenden. Verwenden Sie dann 'git fetch origin', wobei 'origin' das Ursprungs-Repository bezeichnet, mit dem Sie die Zuordnung hergestellt haben.
Elliotrock
git checkout -b newbranchFunktioniert auch hervorragend zum einstufigen Erstellen und Auschecken eines neuen Zweigs basierend auf dem aktuellen Zweig.
Linus
2
Ich denke, dies ist das aktuellste (es ändert sich ständig!). Git 2.5.5 Ich fand die einzige Möglichkeit, die Remote-Zweige tatsächlich zu sehen,git ls-remote und die einzige Möglichkeit, einen tatsächlich zu verwenden, ist git checkout -b [branch] --track [remote/branch]... und das ist nach der git pull [remote] [branch] Arbeit. Das heißt, es hat tatsächlich den gesamten Zweig gezogen, würde es aber immer noch nicht auflisten.
empfindliches
und wenn diese Antwort auch nicht funktioniert, sehen Sie sich diese an .
Eis
Nur um hinzuzufügen, wenn Sie git fetch other_remote only_branch, erhalten Sie immer noch den fatalFehler. Sie müssen git fetch other_remoteohne den Filialnamen. Seltsames Design.
est
258

Ich habe die obige Lösung ausprobiert, aber sie hat nicht funktioniert. Versuchen Sie dies, 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 Namen erstellt local_branch_nameund der Remote- Zweig darin verfolgt.

Sahil Kalra
quelle
37
Dies funktionierte für mich, als weder git fetch origin noch git remote update lokale Zweige erstellten. Ich bin mir nicht sicher warum.
Godsmith
4
Dies war der direkteste Weg, um das zu erreichen, was ich brauchte, nämlich einen Remote-Zweig (nicht Master) zu verwenden, um einen neuen Zweig zu erstellen.
Roralee
7
Funktionierte nahtlos, insbesondere wenn ein einzelner Zweig von einer Fernbedienung mit mehreren Zweigen geklont wurde.
Alex C
7
Dies funktionierte auch für mich, wo akzeptierte Antworten und andere hohe Stimmen dies nicht taten. Meine Git-Version ist 2.5.0
pdepmcp
5
Hat jemand eine Idee, warum dies funktioniert, wenn alles andere nicht funktioniert? (Ich bin auf Git 2.13.0)
Nathan Arthur
108

Dadurch wird DWIM für eine nicht benannte Fernbedienung erstellt ( Dokumentation ):

$ git checkout -t remote_name/remote_branch

Um eine neue Fernbedienung hinzuzufügen, müssen Sie zunächst Folgendes tun:

$ git remote add remote_name location_of_remote
$ git fetch remote_name

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

Tacaswell
quelle
104

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.

Matanster
quelle
2
Ist Ihnen klar, dass dies ein Auszug aus dieser Antwort ist
Thomas Ayoub
14
Wenn man es jetzt betrachtet, überlappen sie sich. Nur meine ist prägnant und sagt dir, was du tun sollst, anstatt eine Geschichte zu erzählen. Ich gehe davon aus, dass es daher nützlicher sein kann, insbesondere für heutige Git-Versionen. Sie können es ablehnen, wenn Sie denken, dass es eine schlechte Antwort ist.
Matanster
1
Git Fetch ist die sichere Option. Versuchen Sie es mit Abrufen, bevor Sie Pull verwenden. Beide laden Remote-Inhalte herunter, aber während der Abruf den lokalen Status nicht ändert, ändert Pull sofort den lokalen Status.
Peter Szalay
89

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

Sie müssen zur fetchNiederlassung ...

Sie können einfach abrufen und dann zum Zweig auschecken. Verwenden Sie dazu den folgenden Befehl in einer Zeile:

git fetch && git checkout test

Ich habe auch das folgende Bild erstellt, damit Sie die Unterschiede teilen, sehen können, wie es fetchfunktioniert und wie es sich unterscheidet von pull:

Git holen

Alireza
quelle
@DmitriZaitsev ja, es wird funktionieren, wenn der Remote-Zweig vorhanden ist und Sie abrufen, erhalten Sie den Zweig lokal ... git fetch && git checkout test..So funktioniert dies, es sei denn, es gibt keinen Remote-Zweig, aber die Frage, dass es dort bereits eine entfernte Niederlassung gibt ...
Alireza
Die Art und Weise, testwie ich die Frage sehe, sieht aus wie ein neuer Zweig, daher ist es unwahrscheinlich, dass er lokal vorhanden ist. Andernfalls könnten Sie es mit einem einzigen git pullBefehl einfacher ziehen .
Dmitri Zaitsev
@DmitriZaitsev, ja, deshalb habe ich gesagt, git fetch, dass die Suche nach Remote-Zweigen, die gerade erstellt wurden, Pull andere unerwünschte Dinge einbringen kann, aber fetch macht alle Zweige verfügbar, wenn Sie das Repo bereits vor Ort haben ...
Alireza
Wäre das nicht fetchohne pullErlaubnis Änderungen in der geholten Kopie , aber nicht in der lokalen Niederlassung, zur Filiale führt seine nicht up-to-date?
Dmitri Zaitsev
56

Gehen Sie folgendermaßen vor, um ein Git-Repository zu klonen:

git clone <either ssh url /http url>

Der obige Befehl überprüft alle Zweige, aber nur der masterZweig wird initialisiert. Wenn Sie die anderen Zweige auschecken möchten, gehen Sie wie folgt vor:

git checkout -t origin/future_branch (for example)

Dieser Befehl checkt den Remote-Zweig aus, und Ihr lokaler Zweigname entspricht dem des Remote-Zweigs.

Wenn Sie Ihren lokalen Filialnamen beim Auschecken überschreiben möchten:

git checkout -t -b enhancement origin/future_branch

Jetzt lautet Ihr lokaler Zweigstellenname enhancement, Ihr Remote-Zweigstellenname jedoch future_branch.

Dokumentation

Madhan Ayyasamy
quelle
Git-Klon <entweder SSH-URL / http-URL> - funktioniert perfekt für mich
Kmeixner
Ja du hast Recht. Vielen Dank für Ihre Informationen, ich werde es sehr bald aktualisieren @warvariuc
Madhan Ayyasamy
Wenn die Fernbedienung keine hat master, funktioniert dies nicht.
polkovnikov.ph
36

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
uma
quelle
2
FYI --trackwird in neueren Versionen von git nicht mehr benötigt, da es standardmäßig festgelegt ist, wie in dieser früheren Antwort erläutert .
33

Zunächst müssen Sie Folgendes tun:

git fetch # Wenn Sie den Filialnamen nicht kennen

git fetch origin branch_name

Zweitens können Sie den Remote-Zweig in Ihrem lokalen Zweig auschecken, indem Sie:

git checkout -b branch_name origin/branch_name

-b erstellt einen neuen Zweig im angegebenen Namen aus dem ausgewählten Remote-Zweig.

Mohideen bin Mohammed
quelle
Ich verstehe -b nicht. Wenn du "git checkout master" machen kannst, warum kannst du dann nicht "git checkout origin / test" machen?
John Little
-b für neuen Zweig, der vom Ursprung / Meister ist
Mohideen bin Mohammed
28

Ich benutze den folgenden Befehl:

git checkout --track origin/other_remote_branch
priyankvex
quelle
13
Diese Antwort wäre viel nützlicher, wenn Sie erklären, warum Sie sie auf diese Weise verwenden. dh warum sollte jemand '--track' verwenden und so weiter ...
Matt Friedman
27

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 erstellen ein latest fixes_for_devvondevelopment

sreekumar
quelle
24

Wenn sich der Zweig auf etwas anderem als der originFernbedienung befindet, möchte ich Folgendes tun:

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

Dadurch wird der nextZweig auf der upstreamFernbedienung in einen lokalen Zweig namens eingecheckt second/next. Das heißt, wenn Sie bereits einen lokalen Zweig mit dem Namen next haben, kommt es nicht zu Konflikten.

$ git branch -a
* second/next
  remotes/origin/next
  remotes/upstream/next
Kris
quelle
19

git fetch && git checkout your-branch-name

Inder Kumar Rathore
quelle
18

Keine dieser Antworten hat bei mir funktioniert. das hat funktioniert:

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

Brianyang
quelle
1
Vielen Dank. Ich habe mich gefragt, ob ich den vollständigen Pfad ( Fernbedienungen / Ursprung / Feature / Zweig ) verwenden muss, den ich gitbeim Aufrufen des git branch -aBefehls gesehen habe, aber ich war mir nicht sicher, also habe ich nur verwendet git checkout -b apps/FEATURE/branch origin/apps/FEATURE/branchund es schien zu funktionieren. Nachricht:Branch 'apps/FEATURE/branch' set up to track remote branch 'apps/FEATURE/epicBranch' from 'origin'. Switched to a new branch 'apps/FEATURE/branch'
Chris22
18

Ich befand mich in einer Situation, in der ich error: pathspec 'desired-branch' did not match any file(s) known to git.alle oben genannten Vorschläge sah. Ich bin auf Git-Version 1.8.3.1.

Das hat also bei mir funktioniert :

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

Die Erklärung dahinter ist, dass ich bemerkt habe, dass der Remote-Zweig beim Abrufen nach FETCH_HEAD abgerufen wurde:

$ git fetch origin desired-branch
From github.com:MYTEAM/my-repo
    * branch            desired-branch -> FETCH_HEAD
Alisa
quelle
17

Führen Sie einfach git checkoutden Namen des Remote-Zweigs aus. Git erstellt automatisch einen lokalen Zweig, der den entfernten Zweig verfolgt:

git fetch
git checkout test

Wenn dieser Zweigname jedoch in mehr als einer Fernbedienung gefunden wird, funktioniert dies nicht, da Git nicht weiß, welche zu verwenden ist. 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.defaultRemoteKonfiguration, in der eine Fernbedienung angegeben ist, auf die standardmäßig zurückgegriffen werden soll, wenn eine solche Mehrdeutigkeit behoben wird.

Eugene Yarmash
quelle
16

git branch -rsagt, der Objektname sei ungültig, da dieser Zweigname nicht in der lokalen Zweigliste von Git enthalten ist. Aktualisieren Sie Ihre lokale Zweigstellenliste vom Ursprung mit:

git remote update

Versuchen Sie dann erneut, Ihren Remote-Zweig zu überprüfen.

Das hat bei mir funktioniert.

Ich glaube, git fetchzieht alle entfernten Zweige ein, was das Originalplakat nicht wollte.

webdevguy
quelle
2
Zu Ihrer Information, git remote update wird auch alle entfernten Zweige abrufen .
13

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

Beispiel:

$ git remote show origin

Führen Sie die folgenden Schritte aus, 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
Thushan
quelle
@hallski antwortete nicht funktionierende 2.15.1-Versionen, aber ich habe .git Datei Gewicht Klon nur 1 Zweig und Filterverlauf mit --depth Flag reduziert. Beispiel: $ git clone -b release --single-branch --depth 5 https://github.com/user/repo.gitKeine Informationen. Hier werden $ git remote show originnicht alle Remote-Zweige mit geklonten Einzelzweig- Repositorys aufgelistet.
Qh0stM4N
10

Von der Fernbedienung holen und den Zweig auschecken.

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

Z.B:

Git-Abrufursprung && Git-Checkout-Funktion / XYZ-1234-Add-Alerts

Pranav
quelle
9

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

Git Checkout Test, der nichts tut

Does nothingist nicht gleich doesn't work, also denke ich, wenn Sie 'git checkout test' in Ihr Terminal 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 mitteilen.

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

Wenn git checkout xxxanalysiert,

  1. Git sieht zunächst xxxals Zweigstellenname aus, aber es gibt keinen Zweig mit dem Namen test.
  2. Dann denkt Git, es sei xxxein Pfad, und zum Glück (oder leider) gibt es eine Datei mit dem Namen test. Dies git checkout xxxbedeutet, dass alle Änderungen in der xxxDatei verworfen werden .
  3. Wenn auch keine Datei mit dem Namen vorhanden ist xxx, versucht Git, die Datei xxxnach bestimmten Regeln zu erstellen . Eine der Regeln ist das Erstellen eines Zweigs mit dem Namen, xxxfalls remotes/origin/xxxvorhanden.
alter Mann
quelle
danke, versuchte immer wieder herauszufinden, warum git nichts tat.
Mike R
8

Um neu erstellte Zweige zu erhalten

git fetch

In einen anderen Zweig wechseln

git checkout BranchName
Hasib Kamal
quelle
6

Sie können alle Remote-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 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 ;
OzzyCzech
quelle
5

git checkout -b "Filialname" [B bedeutet "Lokale Filiale erstellen"]

Git Branch - alle

git checkout -b "Ihr Filialname"

Git Zweig

erfolgreiches Auschecken vom Hauptzweig zum Entwicklungszweig

Geben Sie hier die Bildbeschreibung ein

Keshav Gera
quelle
git checkout -b "Filialname" [B bedeutet "Lokale Filiale erstellen"
Keshav Gera
3

Verwenden Sie Folgendes, um alle Remote-Zweige zu erhalten:

git fetch --all

dann zur Kasse gehen:

git checkout test
Zahra
quelle
2

Verwenden Sie fetchdiese Option , um Ihre gesamte Fernbedienung zu ziehen

   git fetch --all

So listen Sie entfernte Zweige auf:

   git branch -r

Für alle Ihre Filialen auflisten

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

Zum Auschecken / Ändern eines Zweigs

   git checkout master
Nasir Khan
quelle
Versucht git branch -lund es wurde kein entfernter Zweig angezeigt.
Dmitri Zaitsev
benutze git pull --allodergit fetch --all
Nasir Khan
Ja, und danach werden git branch -l immer noch nur lokale Niederlassungen angezeigt. Es scheint genau so zu funktionieren wie git branchohne -l. Wozu also -l?
Dmitri Zaitsev
Auch Ihre Antwort beantwortet die Frage nicht - masterist kein Remote-Zweig.
Dmitri Zaitsev
1
-lFlag für Liste. Sie können verwenden --listzu
Nasir Khan
2

Für uns scheint die remote.origin.fetchKonfiguration ein Problem zu sein. Daher konnten wir keine anderen entfernten Zweige als sehen master, git fetch [--all]was nicht half. Weder git checkout mybranchnoch git checkout -b mybranch --track origin/mybranchfunktionierte, obwohl es sicherlich fern war.

Die vorherige Konfiguration darf masternur abgerufen werden:

$ git config --list | grep fetch
remote.origin.fetch=+refs/heads/master:refs/remotes/origin/master

Beheben Sie das Problem, indem Sie *die neuen Informationen verwenden und vom Ursprung abrufen:

$ git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'

$ git fetch
...
 * [new branch] ...
...

Jetzt konnten wir git checkoutden Remote-Zweig lokal.

Keine Ahnung, wie diese Konfiguration in unserem lokalen Repo gelandet ist.

hzpc-joostk
quelle
1
Dies löste es für mich, da ich einen einzelnen Zweig geklont hatte
Pontus Holmbom
2

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

Ich habe beispielsweise versucht, einen Remote-Zweig mit dem Namen als #9773auszuchecken, aber der Befehl hat nicht ordnungsgemäß funktioniert, wie in der folgenden Abbildung dargestellt:

Geben Sie hier die Bildbeschreibung ein

Aus irgendeinem Grund habe ich mich gefragt, ob das scharfe Symbol (#) etwas damit zu tun haben könnte, und dann habe ich versucht, den '#9773'Zweignamen mit einfachen Anführungszeichen zu umgeben, wie rathen als nur #9773, und zum Glück hat es gut funktioniert.

$ git checkout -b '#9773' origin/'#9773'
Ulysses Alves
quelle
In vielen Unix-Shells wird das #Zeichen für Kommentare verwendet, sodass alles nach dem #ignoriert wird. Dies ist eine Shell-Sache und nichts Besonderes für Git. Es #sollte ausreichen, Anführungszeichen eines Backslashs vor dem zu verwenden.
Paulo Scardine
1

Bitte folgen Sie dem Befehl, um einen leeren Ordner zu erstellen. Geben Sie das ein und verwenden Sie 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'
Mehedi Hasan
quelle