8559 Stimmen

Wie prüfe ich einen entfernten Git-Zweig aus?

Jemand hat einen Zweig namens test mit git push origin test in ein gemeinsames Repository geschoben. Ich kann den Zweig mit git branch -r sehen. Wie kann ich den Remote-Zweig test auschecken? Ich habe es versucht:

  • git checkout test, was nichts macht
  • git checkout origin/test gibt * (kein Zweig)

52 Stimmen

Ich denke, dieser Thread ist nicht hilfreich. Nichts scheint zu funktionieren, die ursprüngliche Frage scheint in vielen der Antworten verloren gegangen zu sein. Ich habe jedes Wort gelesen, alles unten ausprobiert und habe keine Ahnung, wie man das machen soll, was der OP machen möchte.

58 Stimmen

Ich habe das Gefühl, als würde ich verrückt werden. Ich versuche, einen branch von einem upstream und nicht nur von origin zu auszuchecken, und jede empfohlene Antwort ist überhaupt nicht hilfreich (im wahrsten Sinne des Wortes). EDIT - entschuldigen Sie bitte, die Vielzahl der Vorschläge in den beiden erstplatzierten Antworten war nutzlos; der dritte (git branch test origin/test) funktioniert. Schön, dass die beiden ersten Antworten 20x so viele Stimmen haben...

0 Stimmen

Vielleicht nützlich für jemand anderen: Als ich die Atom-Editor-Benutzeroberfläche benutzte, um Änderungen abzurufen und zu ziehen, zog sie Änderungen am "main" branch, aber erstellte keine lokale Referenz zum zweiten Remote-Branch. Die Verwendung von git fetch in der Befehlszeile hat diese Referenz erstellt, dann konnte ich den Branch gemäß mehrerer Antworten auschecken.

22voto

Inder Kumar Rathore Punkte 38280

git fetch && git checkout dein-branch-name

0 Stimmen

Wie funktioniert diese Magie?

0 Stimmen

@PeterMortensen Es gibt zwei Befehle, git fetch holt alle Informationen von dem entfernten Speicherort und lädt auch die neuesten verfügbaren Branches herunter. Dann git checkout your-branch-name wechselt zu dem Branch.

17voto

chilin Punkte 309

TL;DR

Verwendung von git switch statt git checkout. Weitere Details finden Sie auf dieser Seite.

Ich denke, die Antwort ist überholt. Git hat einige Funktionen von checkout jetzt auf switch und restore aufgeteilt.

Hier ist meine Zusammenfassung:

Wenn Sie etwas für einen Remote-Branch aktualisieren möchten, sollten Sie einen lokalen Branch erstellen, um den Remote-Branch "zu verfolgen". Sie können alles aktualisieren, was Sie möchten, lokal und schließlich auf Remote pushen. Wenn Sie direkt nach dem Klonen Ihres Repositorys zum Remote-Branch wechseln, sehen Sie möglicherweise den Status "detached HEAD" und die folgende Nachricht von Git:

Hinweis: Wechsel zu 'origin/asd'.

Sie befinden sich im Zustand des "detached HEAD". Sie können umschauen, experimentelle
Änderungen vornehmen und diese commiten, und Sie können alle Commits, die Sie in diesem
Zustand machen, verwerfen, ohne dass sich dies auf Branches auswirkt, indem Sie wieder
auf einen Branch wechseln.

Wenn Sie einen neuen Branch erstellen möchten, um die von Ihnen erstellten Commits beizubehalten,
können Sie dies (jetzt oder später) mit -c und dem switch-Befehl tun. Beispiel:

  git switch -c 

Oder diese Operation mit rückgängig machen:

  git switch -

Diesen Hinweis ausschalten, indem Sie die Konfigurationsvariable advice.detachedHead auf false setzen

HEAD befindet sich jetzt bei d3e1083 Update a

Wie können wir also einen lokalen Branch erstellen, um einen Remote-Branch zu verfolgen?

Um einen lokalen Branch zu erstellen, um einen Remote-Branch zu verfolgen, können Sie git checkout oder git switch verwenden. Wenn Sie eine Datei oder einen Ordner mit dem gleichen Namen wie Ihr Remote-Branch-Namen haben, würde git checkout einige Fehlermeldungen ausgeben, aber git switch funktioniert normal!

Beispiel:

  1. Alle Branches anzeigen, und wir möchten einen lokalen Branch erstellen, um den Remote-Branch remotes/origin/asd zu verfolgen, und wir haben auch den Dateinamen asd:

    $ git branch -a
    * master
      remotes/origin/HEAD -> origin/master
      remotes/origin/asd
      remotes/origin/ereres
      remotes/origin/master
      remotes/origin/zxc
    $ ls
    a  asd
  2. Der Dateiname ist gleich wie der Remote-Branch, und Git sollte einige Fehlermeldungen ausgeben, wenn wir den Befehl git checkout verwenden, um einen lokalen Branch zu erstellen, der einen Remote-Branch verfolgt

    $ git checkout asd
    fatal: 'asd' könnte sowohl eine lokale Datei als auch ein Tracking-Branch sein.
    Bitte verwenden Sie -- (und optional --no-guess), um zu entwirren
  3. Es funktioniert, wenn wir git switch verwenden!

    $ git switch ereres
    Branch 'ereres' wurde eingerichtet, um den Remote-Branch 'ereres' von 'origin' zu verfolgen.
    Zu einem neuen Branch 'ereres' gewechselt
    
    $ git branch -vv
    * ereres 3895036 [origin/ereres] Update a
      master f9e24a9 [origin/master] Merge branch 'master' of

0 Stimmen

Funktioniert nicht mit 2.17.1, keine Anweisung gefunden für "git switch". Die Antwort von @hallski funktioniert für mich!

0 Stimmen

@Siwei Kein Befehl, da Ihre Git-Version < 2.23 ist. Sie können sich auf diesen Link für weitere Details beziehen.

0 Stimmen

Re "Die Antwort ist veraltet": Welche Antwort? Die akzeptierte Antwort? Mehrere Antworten? Welche?

17voto

webdevguy Punkte 927

git branch -r sagt, dass der Objektname ungültig ist, weil dieser Branch-Name nicht in der lokalen Branch-Liste von Git ist. Aktualisiere deine lokale Branch-Liste von origin mit:

git remote update

Versuche dann erneut, deinen Remote-Branch auszuchecken.

Dies hat bei mir funktioniert.

Ich glaube, dass git fetch alle Remote-Branches holt, was nicht das ist, was der Original-Poster wollte.

2 Stimmen

FYI, git remote update wird auch alle entfernten Branches abrufen.

15voto

Pranav Punkte 893

Hole vom Remote ab und wechsle zum Branch.

git fetch  && git checkout  

Zum Beispiel:

git fetch origin && git checkout feature/XYZ-1234-Add-alerts

14voto

Keshav Gera Punkte 9684

git checkout -b "Branch_name" [ B steht für lokalen Branch erstellen]

git branch --all

git checkout -b "Dein Branch-Name"

git branch

git pull origin "Dein Branch-Name"

Erfolgreich vom Master-Branch zum Dev-Branch gewechselt

Bildbeschreibung hier eingeben

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X