web-dev-qa-db-de.com

Msgstr "Kann Pfade nicht aktualisieren und gleichzeitig zur Verzweigung wechseln"

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.

160
marekful

'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)

177
VonC

FWIW: Wenn Sie in Ihrem Zweignamen einen Tippfehler haben, erhalten Sie denselben Fehler.

68
Ludder

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
49
Bob Aman

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
16
Ashwini Reddy

Sie können diesen Schritten folgen, wenn Sie über dieses Problem stolpern:

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

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)
  1. Nachdem Sie die Details wie (URL abrufen usw.) überprüft haben, führen Sie diesen Befehl aus, um einen neuen Zweig (d. H. Den Sie möglicherweise in Ihrem lokalen Repo auschecken möchten) abzurufen, der in der fernen, jedoch nicht in Ihrem lokalen Zweig vorhanden ist.
» 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.

8
ssasi

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
1
RayLoveless

Wenn Sie in Ihrem Zweig Leerzeichen haben, wird dieser Fehler angezeigt.

1
dansek

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 ....

1
questionKing

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).

0
Raheel Hasan

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

0
kang

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

Möglicherweise werden viele Dateien gelöscht. Sie können laufen 

  1. git reset .

  2. git checkout .

  3. git fetch -p

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

  5. git submoudle add .... 

0
knight2016