Manchmal verwende ich die Option checkout -b
, um einen neuen Zweig zu erstellen, ihn gleichzeitig auszuchecken und das Tracking in einem Befehl einzurichten.
In einer neuen Umgebung erhalte ich diesen Fehler:
$ 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 es Git nicht? Früher funktionierte dies mit demselben Repo.
'
Origin/master
', der nicht als Commit aufgelöst werden kann
Seltsam: Sie müssen Ihre Fernbedienungen überprüfen:
git remote -v
Und stellen Sie sicher, dass Origin
abgerufen wird:
git fetch Origin
Dann:
git branch -avv
(um zu sehen, ob Sie einen Origin/master
-Zweig abgerufen haben)
FWIW: Wenn Sie in Ihrem Zweignamen einen Tippfehler haben, erhalten Sie denselben Fehler.
Sie können diesen Fehler im Kontext von z. ein Travis-Build, der standardmäßig Code mit git clone --depth=50 --branch=master
auscheckt. Nach bestem Wissen können Sie --depth
über .travis.yml
steuern, nicht jedoch den --branch
. Da dies dazu führt, dass nur ein einziger Zweig von der Fernbedienung verfolgt wird, müssen Sie die Fernbedienung unabhängig voneinander 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
Diese einfache Sache hat für mich funktioniert!
Wenn es sagt, dass es nicht zwei Dinge gleichzeitig tun kann, trennen Sie diese.
git branch branch_name Origin/branch_name
git checkout branch_name
Sie können diesen Schritten folgen, wenn Sie über dieses Problem stolpern:
git Remote Show Herkunft
welche gibt dies aus:
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)
» git remote update Fetching Origin From gitlab.domain.local:ProjectGroupName/ProjectName * [new branch] Feature3 -> Feature3
Wie Sie sehen, wurde der neue Zweig von Remote abgerufen.
3. Zum Schluss checken Sie den Zweig mit diesem Befehl aus
» 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 mitzuteilen, dass er den Zweig mit remote verfolgt (mit --track ).
Mit dem obigen Befehl wird der lokale Zweig so eingestellt, dass er den entfernten Zweig von Origin aus verfolgt.
Für mich musste ich die Fernbedienung hinzufügen:
git remote -add myRemoteName('Origin' in your case) remoteGitURL
dann konnte ich abholen
git fetch myRemoteName
Wenn Sie in Ihrem Zweig Leerzeichen haben, wird dieser Fehler angezeigt.
Dies hat zur Folge, dass Ihr lokaler Zweig keinen Remote-Zweig verfolgt. Wie gesagt, Sie müssen diese Befehle verwenden:
git remote update
git fetch
git checkout -b branch_nameA Origin/branch_nameB
Ich habe gerade mein Problem gelöst ....
Zuerst müssen Sie Fetch
die entfernte (der bestimmte Zweig) angeben, dann können Sie ein lokales br erstellen und es mit diesem entfernten Zweig mit Ihrem Befehl verfolgen (d. H. checkout
mit -b und --track).
Sie können diese Befehle verwenden: Git Remote-Update, Git fetch.... Git checkout -b VerzweigungsnameA Ursprung: VerzweigungsnameB
Ich denke, vielleicht liegt es daran, dass Ihre örtliche Niederlassung die entfernte Niederlassung nicht verfolgen kann
Sie sollten das Untermodul-Verzeichnis aufrufen und git status
ausführen.
Möglicherweise werden viele Dateien gelöscht. Sie können laufen
git reset .
git checkout .
git fetch -p
git rm --cached submodules
// submoudles ist dein Name
git submoudle add ....