“Imansible aggiornare i percorsi e passare al ramo contemporaneamente”

A volte uso l’opzione checkout -b per creare un nuovo ramo, controllarlo allo stesso tempo e impostare il tracciamento in un unico comando.

In un nuovo ambiente, ottengo questo errore:

 $ 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? 

Perché a Git non piace? Questo funzionava con lo stesso repository.

origin/master ‘ che non può essere risolto come commit

Strano: devi controllare i tuoi telecomandi:

 git remote -v 

E assicurati che l’ origin venga recuperata:

 git fetch origin 

Poi:

 git branch -avv 

(per vedere se hai recuperato un ramo origin/master )

FWIW: Se hai un errore di battitura nel tuo branchname otterrai lo stesso errore.

È ansible ottenere questo errore nel contesto di, ad esempio, una build di Travis che, per impostazione predefinita, verifica il codice con git clone --depth=50 --branch=master . Per quanto ne so, puoi controllare --depth tramite .travis.yml ma non --branch . Poiché ciò comporta che solo un singolo ramo viene tracciato dal telecomando, è necessario aggiornare autonomamente il telecomando per tracciare i riferimenti del telecomando desiderato.

Prima:

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

La correzione:

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

Dopo:

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

Questa semplice cosa ha funzionato per me!

Se dice che non può fare 2 cose contemporaneamente, separale.

 git branch branch_name origin/branch_name git checkout branch_name 

Potresti seguire questi passaggi quando ti imbatti in questo problema:

  1. Eseguire il seguente comando per elencare i rami noti per il proprio repository locale.

git remote show origin

che emette questo:

  remote origin Fetch URL:  Push URL:  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. Dopo aver verificato i dettagli come (recupera URL, ecc.), Esegui questo comando per recuperare qualsiasi nuovo ramo (ad esempio che potresti voler pagare nel repository locale) che esiste nel telecomando ma non nel tuo locale.
 » git remote update Fetching origin From gitlab.domain.local:ProjectGroupName/ProjectName * [new branch] Feature3 -> Feature3 

Come puoi vedere il nuovo ramo è stato recuperato da remoto.
3. Infine, controlla il ramo con questo comando

 » git checkout -b Feature3 origin/Feature3 Branch Feature3 set up to track remote branch Feature3 from origin. Switched to a new branch 'Feature3' 

Non è necessario dire esplicitamente a Git di tracciare (usando –track ) il ramo con il telecomando.

Il comando precedente imposterà il ramo locale per tracciare il ramo remoto dall’origine.

Per me avevo bisogno di aggiungere il telecomando:

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

allora potrei andare a prendere

 git fetch myRemoteName 

Per prima cosa devi Fetch il telecomando (il ramo specifico), quindi puoi creare un br locale e tracciarlo con quel ramo remoto usando il tuo comando (es. checkout con -b e –track).

Dovresti andare nella directory del sottomodulo ed eseguire lo git status .

Potresti vedere molti file cancellati. Potresti correre

  1. git reset .

  2. git checkout .

  3. git fetch -p

  4. git rm --cached submodules cache // submoudles è il tuo nome

  5. git submoudle add ....

Puoi usare questi comandi: git update remoto, git fetch, git checkout -b branch_nameA origine: branch_nameB

Penso che forse è perché la tua filiale locale non è in grado di tracciare il ramo remoto

Provoca che il tuo ramo locale non traccia il ramo remoto. Come ha detto ssasi, è necessario utilizzare questi comandi:

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

Ho risolto il mio problema solo ora ….