"Pfade können nicht aktualisiert und gleichzeitig zur Verzweigung gewechselt werden"

186

Manchmal verwende ich die checkout -bOption, um einen neuen Zweig zu erstellen, ihn gleichzeitig auszuchecken und die Verfolgung in einem Befehl einzurichten.

In einer neuen Umgebung wird folgende Fehlermeldung angezeigt:

$ git checkout -b test --track origin/master
fatal: Cannot update paths and switch to branch 'test' at the same time.
Did you intend to checkout 'origin/master' which can not be resolved as commit?

Warum mag Git es nicht? Dies funktionierte früher mit demselben Repo.

marekful
quelle
6
Die Fehlermeldung zeigt an, dass origin/masteres sich nicht um eine Festschreibungs-ID handelt, dh nicht um einen gültigen Remote-Zweig. Wird es in der git branch -rAusgabe angezeigt?
Torek
Es war nicht so. Es stellte sich heraus, dass ich beim Klonen nicht alle Remote-Zweige überprüft habe.
Marekful

Antworten:

199

' origin/master' was nicht als Commit gelöst werden kann

Seltsam: Sie müssen Ihre Fernbedienungen überprüfen:

git remote -v

Und stellen Sie sicher, dass originabgerufen wird:

git fetch origin

Dann:

git branch -avv

(um zu sehen, ob Sie einen origin/masterZweig abgerufen haben )

Verwenden Sie schließlich git switchanstelle des verwirrendengit checkout Git 2.23+ (August 2019).

git switch -c test --track origin/master
VonC
quelle
11
Ich hatte einen Tippfehler in meinem Befehl, der diesen Fehler auslöste. Ich habe meine Fernbedienung nicht richtig geschrieben!
Qix
2
Es war eine neue Niederlassung und mein lokales Repository wusste nichts davon. Ich musste ein machen pullund dann funktionierte dieser Befehl.
Coding_idiot
2
Diese Antwort war hilfreich, weil sie mir zeigte, dass wirklich etwas Seltsames vor sich geht: Fernbedienungen sind richtig eingestellt, aber der neue Remote-Zweig wird einfach nicht abgerufen. Wenn ich die Fernbedienung in ein sauberes Verzeichnis klone, funktioniert es. Könnte mein .gitVerzeichnis irgendwie beschädigt sein?
Konrad Rudolph
git remote -v hat diesen schwerwiegenden Fehler zurückgegeben: Kein gültiger Objektname: 'remote'.
Karim Samir
@KarimSamir Sie könnten eine separate Frage stellen (mit Ihrem Betriebssystem und Ihrer Git-Version), wie git remote -vsie in einem Git-Repo ausgeführt wird.
VonC
78

FWIW: Wenn Ihr Filialname einen Tippfehler enthält, wird derselbe Fehler angezeigt.

Ludder
quelle
4
Eigentlich wäre es schön, wenn sich jemand die Zeit nehmen könnte, Git-Entwicklern davon zu erzählen, die Fehlermeldung ist nicht sehr informativ;)
Scorchio
8
Ja, das war mein Problem, ich hatte ein Leerzeichen in meinem Filialnamen
Karim Samir
Gleich hier habe ich versucht, git checkout -b origin mybranchanstatt git checkout -b mybranch(extra origin)
Guillaume Renoult
Ich habe meinen Filialnamen kopiert und nach dem Filialnamen ein Leerzeichen nachgestellt, das diesen Fehler verursacht hat.
LearningKnight
Ich habe versucht, orgin/my-branchstattdessen auszuchecken origin/my-branch. Verpasste iund ich kratzte mir eine Weile am Kopf, um zu verstehen, warum ein alter Verbündeter sich weigert, miteinander auszukommen. Tippfehler war in der Tat das Problem.
DDM
55

Sie können diesen Fehler beispielsweise im Zusammenhang mit einem Travis-Build erhalten, mit dem standardmäßig Code ausgecheckt wird git clone --depth=50 --branch=master. Nach meinem besten Wissen können Sie --depthüber .travis.ymlaber nicht steuern --branch. Da dies dazu führt, dass nur ein Zweig von der Fernbedienung verfolgt wird, müssen Sie die Fernbedienung unabhängig aktualisieren, um die Refs der gewünschten Fernbedienung zu verfolgen.

Vor:

$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master

Die Reparatur:

$ git remote set-branches --add origin branch-1
$ git remote set-branches --add origin branch-2
$ git fetch

Nach dem:

$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/branch-1
remotes/origin/branch-2
remotes/origin/master
Bob Aman
quelle
5
Hat es für mich gelöst. Ich habe einen flachen Klon --depth = 1 verwendet und dies war das, was ich brauchte, um Zweige zu wechseln.
Sawtaytoes
1
Gah ja, die Tiefensache führt definitiv zu diesem Fehler! Wenn möglich, würde ich vorschlagen, dass die ersten Sätze bearbeitet werden, um die Tiefe hervorzuheben.
Dubslow
19

Diese einfache Sache hat bei mir funktioniert!

Wenn es heißt, dass es nicht zwei Dinge gleichzeitig tun kann, trennen Sie sie.

git branch branch_name origin/branch_name 

git checkout branch_name
Ashwini Reddy
quelle
Macht es einfach herauszufinden, was das eigentliche Problem ist
Z. Khullah
9

Sie können die folgenden Schritte ausführen, wenn Sie auf dieses Problem stoßen:

  1. Führen Sie den folgenden Befehl aus, um die für Ihr lokales Repository bekannten Zweige aufzulisten.

Git Remote Show Ursprung

welches dies ausgibt:

 remote origin
  Fetch URL: <your_git_path>
  Push  URL: <your_git_path>
  HEAD branch: development
  Remote branches:
    development                             tracked
    Feature2                                tracked
    master                                  tracked
    refs/remotes/origin/Feature1         stale (use 'git remote prune' to remove)
  Local branches configured for 'git pull':
    Feature2     merges with remote Feature2
    development  merges with remote development
    master       merges with remote master
  Local refs configured for 'git push':
    Feature2     pushes to Feature2     (up to date)
    development  pushes to development (up to date)
    master       pushes to master      (local out of date)
  1. Führen Sie diesen Befehl aus, nachdem Sie die Details wie (URL abrufen usw.) überprüft haben, um alle neuen Zweige abzurufen (dh die Sie möglicherweise in Ihrem lokalen Repo auschecken möchten), die auf der Fernbedienung, aber nicht in Ihrem lokalen Repo vorhanden sind.
» git remote update

Fetching origin
From gitlab.domain.local:ProjectGroupName/ProjectName
 * [new branch]      Feature3    -> Feature3

Wie Sie sehen, wurde der neue Zweig von der Fernbedienung abgerufen.
3. Überprüfen Sie abschließend den Zweig mit diesem Befehl

» git checkout -b Feature3 origin/Feature3

Branch Feature3 set up to track remote branch Feature3 from origin.
Switched to a new branch 'Feature3'

Es ist nicht notwendig, Git explizit anzuweisen, den Zweig mit remote zu verfolgen (mit --track ).

Mit dem obigen Befehl wird der lokale Zweig so eingestellt, dass der entfernte Zweig vom Ursprung aus verfolgt wird.

ssasi
quelle
4

Wenn Sie in Ihrer Filiale Leerzeichen haben, wird dieser Fehler angezeigt.

Dansek
quelle
1

Für mich musste ich die Fernbedienung hinzufügen:

git remote -add myRemoteName('origin' in your case) remoteGitURL

dann könnte ich holen

git fetch myRemoteName
RayLoveless
quelle
1

Dies führt dazu, dass Ihr lokaler Zweig den Remote-Zweig nicht verfolgt. Wie ssasi sagte, müssen Sie diese Befehle verwenden:

git remote update
git fetch
git checkout -b branch_nameA origin/branch_nameB

Ich habe mein Problem gerade gelöst ...

FrageKönig
quelle
0

Zuerst müssen Sie Fetchdie Fernbedienung (den spezifischen Zweig) verwenden, dann können Sie ein lokales br erstellen und es mit diesem Remote-Zweig mit Ihrem Befehl checkoutverfolgen (dh mit -b und --track).

Raheel Hasan
quelle
0

Sie sollten das Submodul-Verzeichnis aufrufen und ausführen git status.

Möglicherweise wurden viele Dateien gelöscht. Du darfst rennen

  1. git reset .

  2. git checkout .

  3. git fetch -p

  4. git rm --cached submodules // Submoudles ist dein Name

  5. git submoudle add ....

knight2016
quelle
0

Sie können die folgenden Befehle verwenden: git remote update, git fetch, git checkout -b branch_nameA origin: branch_nameB

Ich denke, vielleicht liegt es daran, dass Ihre lokale Niederlassung die entfernte Niederlassung nicht verfolgen kann

kang
quelle