477 Stimmen

Git-Checkout: Aktualisieren von Pfaden ist nicht kompatibel mit dem Wechsel von Zweigen

Mein Problem bezieht sich auf Fataler Git-Fehler beim Wechsel des Zweigs .

Ich versuche, einen entfernten Zweig mit dem folgenden Befehl zu holen

git checkout -b local-name origin/remote-name

aber ich erhalte diese Fehlermeldung:

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

Wenn ich manuell einen Zweig erstelle und dann den entfernten Zweig ziehe, funktioniert das genauso wie das Erstellen eines neuen Klons und das Auschecken des Zweigs.

Warum funktioniert es bei dem Repository, mit dem ich arbeite, nicht?

1 Stimmen

Was hat sich seit der ersten Ausführung dieses Befehls (der die Fehlermeldung auslöste) geändert?

0 Stimmen

Git init git fetch git fetch git://blabla.com/dir1/Projekt.git

747voto

user167628 Punkte 7664

Ich glaube, das passiert, wenn Sie versuchen, einen entfernten Zweig auszuchecken, den Ihr lokales Git-Repository noch nicht kennt. Versuchen Sie es:

git remote show origin

Wenn der entfernte Zweig, den Sie auschecken wollen, unter "Neue entfernte Zweige" und nicht unter "Verfolgte entfernte Zweige" zu finden ist, müssen Sie ihn zuerst holen:

git remote update
git fetch

Jetzt sollte es funktionieren:

git checkout -b local-name origin/remote-name

7 Stimmen

Damit war das Problem für mich gelöst, nicht mit der obigen willkürlichen Antwort.

22 Stimmen

Das sollte "git fetch REPOSITORY_NAME" sein, um alle Zweige dieses Repositorys zu erhalten.

1 Stimmen

Nicht unbedingt. git fetch erhält alle Zweige aus allen entfernten Repos.

151voto

Rare Pleasures Punkte 1611

Abweichende Syntax,

git fetch origin remote_branch_name:local_branch_name

13 Stimmen

Das hat bei mir funktioniert. Der Name meines entfernten Zweigs ist nicht origin. Ich weiß nicht, ob das einen Unterschied macht, da ich Wodka getrunken habe.

14 Stimmen

Dies ist nicht nur eine alternative Syntax, sondern kann funktionieren, wenn git checkout -b branch_name origin/branch_name nicht funktioniert

0 Stimmen

Omg! fnx! u rettete mich von einem Kopfschmerz! git remote update && git fetch funktionierte nicht für mich - ich sah keine anderen Zweige

48voto

PålOliver Punkte 2225

Nachdem ich das meiste, was ich in diesem Thread lesen konnte, erfolglos ausprobiert habe, bin ich auf diesen Thread gestoßen: Entfernter Zweig wird in "git branch -r" nicht angezeigt

Es stellte sich heraus, dass meine .git/config-Datei nicht korrekt war. Nach einer einfachen Korrektur wurden alle Zweige angezeigt.

Ausgehend von

[remote "origin"]
    url = http://stash.server.com/scm/EX/project.git
    fetch = +refs/heads/master:refs/remotes/origin/master

zu

[remote "origin"]
    url = http://stash.server.com/scm/EX/project.git
    fetch = +refs/heads/*:refs/remotes/origin/*

Das war der Trick

4 Stimmen

Das ist in der Tat eine merkwürdige Konfiguration. Sie weist Git an, nur den Master-Zweig aus der Ferne zu holen.

3 Stimmen

Wenn ich könnte, würde ich sie 10-mal höher bewerten! - das scheint eine Sache zu sein, die das neue Git beim Klonen macht

2 Stimmen

Ich hatte das gleiche Problem, es hat mich verrückt gemacht. Jeder, der keine entfernten Zweige sieht, sollte dies bitte überprüfen!!!

12voto

VirtualStaticVoid Punkte 1626

Ich bin mir nicht sicher, ob dies hilfreich oder für Ihre Frage relevant ist, aber wenn Sie versuchen, nur eine einzeln Zweig aus dem entfernten Repository zu erstellen, dann werden die folgenden Git-Befehle den Zweck erfüllen:

url= << URL TO REPOSITORY >>
branch= << BRANCH NAME >>

git init
git remote add origin $url
git fetch origin $branch:origin/$branch
git checkout -b $branch --track origin/$branch

11voto

Olivier Refalo Punkte 47916

Keine der oben genannten Maßnahmen hat bei mir funktioniert. Meine Situation ist etwas anders, mein entfernter Zweig befindet sich nicht auf Herkunft . aber in einem anderen Repository.

git remote add remoterepo GIT_URL.git
git fetch remoterepo
git checkout -b branchname remoterepo/branchname

Tipp: Wenn Sie den entfernten Zweig in der folgenden Ausgabe nicht sehen git branch -v -a gibt es keine Möglichkeit, dies zu überprüfen.

Bestätigt, dass es unter 1.7.5.4 funktioniert

0 Stimmen

Arf, stelle gerade fest, dass VirtualStaticVoid die gleiche Lösung hatte!

0 Stimmen

+1 für git branch -v -a : Ich hatte eine falsch konfigurierte Fernbedienung, die sagte fetch = +refs/heads/*:refs/remotes/master/* auch wenn die Fernbedienung aufgerufen wurde upstream .

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