befehle - git rebase




Wie checke ich einen entfernten Git-Zweig aus? (18)

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 der Benutzer masukomi in einem Kommentar darauf hinweist, funktioniert git checkout test 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 lokal an einem entfernten Zweig arbeiten können, müssen Sie ihn wie in den Antworten unten beschrieben abrufen.

Um einen Zweig abzurufen, müssen Sie einfach:

git fetch origin

Dadurch werden alle entfernten Zweige für Sie abgerufen. Sie können die zur Kasse verfügbaren Filialen sehen mit:

git branch -v -a

Mit den abgelegenen Zweigstellen in der Hand müssen Sie nun die Zweigstelle prüfen, die Sie interessiert, und Ihnen eine lokale Arbeitskopie geben:

git checkout -b test origin/test

Jemand hat einen Zweig namens test mit git push origin test in ein gemeinsam genutztes Repository verschoben. Ich kann den Zweig mit git branch -r .

Jetzt versuche ich, den entfernten Testzweig zu überprüfen.

Ich habe es versucht:

  • git checkout test der nichts tut

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

Wie checke ich einen entfernten Git-Zweig aus?


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 Referenzen aus dem Remote-Repository abgerufen haben. Wenn dies der Fall ist, erhalten Sie folgende Fehlermeldung:

$ git checkout -b remote_branch origin/remote_branch

fatal: git checkout: Das Aktualisieren von Pfaden ist mit dem Wechseln der Zweige nicht kompatibel.
Haben Sie vor, 'origin / remote_branch' auszuchecken, was nicht als Commit aufgelöst werden kann?

Lösung

Wenn Sie diese Nachricht erhalten, müssen Sie zunächst einen 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 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 beim Ausführen von git fetch origin alle entfernten Zweige abgerufen, die noch nicht für die Verfolgung auf unserem lokalen Computer eingerichtet waren. Da wir nun einen Verweis auf den Remote-Zweig haben, können Sie git checkout remote_branch einfach git checkout remote_branch und die Vorteile des Remote-Tracking nutzen.


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


Benutzen:

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

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


Dies wird DWIM für einen entfernten, nicht benannten Ursprung ( documentation ) sein:

$ 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 teilt Git mit, dass die Fernbedienung existiert, der zweite bekommt die Commits.


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

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'

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

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

Ich benutze den folgenden Befehl:

git checkout --track origin/other_remote_branch

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'

Dadurch wird der entfernte Zweig local_branch_name und ein neuer lokaler Zweig (falls nicht bereits vorhanden) mit dem Namen local_branch_name und der entfernte Zweig darin verfolgt.


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

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


Sie können mit dem folgenden Bash-Skript beginnen, alle entfernten Zweige zu 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 ;

Wenn der Name des Remote-Zweigs mit Sonderzeichen beginnt, müssen Sie im Checkout-Befehl einfache Anführungszeichen verwenden, sonst weiß Git nicht, von welchem ​​Zweig Sie sprechen.

Ich habe zum Beispiel versucht, einen entfernten Zweig namens #9773 , der Befehl funktionierte jedoch nicht ordnungsgemäß, wie in der folgenden Abbildung dargestellt:

Aus irgendeinem Grund fragte ich mich, ob das scharfe Symbol (#) etwas damit zu tun haben könnte, und versuchte dann, den Namen des Zweiges mit einfachen Anführungszeichen zu umgeben, wie '#9773' rathen als nur #9773 , und es funktionierte gut.

$ git checkout -b '#9773' origin/'#9773'

Wenn sich der Zweig auf einer anderen als der origin Fernbedienung befindet, mache ich gerne Folgendes:

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

Dadurch wird der next Zweig in der upstream entfernten Station in einen lokalen Zweig mit dem Namen " second/next . Das heißt, wenn Sie bereits einen lokalen Zweig als nächsten haben, wird es keinen Konflikt geben.

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

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

git remote update

Versuchen Sie dann erneut, Ihren Remote-Zweig auszuchecken.

Das hat bei mir funktioniert.

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


git fetch && git checkout your-branch-name


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

Sie müssen den Zweig fetch ...

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

git fetch && git checkout test

Ich habe auch das folgende Bild für Sie erstellt, um die Unterschiede zu teilen und zu sehen, wie fetch funktioniert und wie es sich unterscheidet:


Um neu erstellte Zweige zu erhalten

git fetch

In einen anderen Zweig wechseln

git checkout BranchName




remote-branch