web-dev-qa-db-fra.com

"Impossible de mettre à jour les chemins et de changer de branche en même temps"

J'utilise parfois l'option checkout -b pour créer une nouvelle branche, l'extraire en même temps et configurer le suivi en une seule commande.

Dans un nouvel environnement, j'obtiens cette erreur:

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

Pourquoi Git ne l'aime-t-il pas? Cela fonctionnait avec le même repo.

160
marekful

'Origin/master' qui ne peut pas être résolu en commit

Étrange: vous devez vérifier vos télécommandes:

git remote -v

Et assurez-vous que Origin est récupéré:

git fetch Origin

Ensuite:

git branch -avv

(pour voir si vous avez récupéré une branche Origin/master)

177
VonC

FWIW: Si vous avez une faute de frappe dans votre nom de branche, vous obtiendrez la même erreur.

68
Ludder

Vous pouvez obtenir cette erreur dans le contexte de, par exemple. une construction Travis qui, par défaut, extrait le code avec git clone --depth=50 --branch=master. Autant que je sache, vous pouvez contrôler --depth via .travis.yml mais pas le --branch. Dans la mesure où cela entraîne le suivi d'une seule branche par la télécommande, vous devez mettre à jour indépendamment la télécommande pour suivre les références de la télécommande souhaitée.

Avant:

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

Le correctif:

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

Après:

$ git branch -a
* master
remotes/Origin/HEAD -> Origin/master
remotes/Origin/branch-1
remotes/Origin/branch-2
remotes/Origin/master
49
Bob Aman

Cette chose simple a fonctionné pour moi!

Si le message dit qu'il ne peut pas faire 2 choses en même temps, séparez-les. 

git branch branch_name Origin/branch_name 

git checkout branch_name
16
Ashwini Reddy

Vous pouvez suivre ces étapes lorsque vous tombez sur ce problème:

  1. Exécutez la commande suivante pour répertorier les branches connues de votre référentiel local.

émission à distance git

qui produit ceci:

 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. Après avoir vérifié les détails tels que (récupérer l'URL, etc.), exécutez cette commande pour extraire toute nouvelle branche (c'est-à-dire que vous souhaiterez peut-être extraire dans votre référentiel local) existant dans la télécommande mais pas dans votre locale.
» git remote update

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

Comme vous pouvez le constater, la nouvelle branche a été récupérée à distance. 
3. Enfin, vérifiez la branche avec cette commande

» git checkout -b Feature3 Origin/Feature3

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

Il n'est pas nécessaire d'indiquer explicitement à Git de suivre (avec --track ) la branche avec remote. 

La commande ci-dessus configurera la branche locale pour suivre la branche distante depuis Origin.

8
ssasi

Pour moi, je devais ajouter la télécommande:

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

alors je pourrais aller chercher

git fetch myRemoteName
1
RayLoveless

Si vous avez des espaces dans votre branche, vous obtiendrez cette erreur.

1
dansek

Il en résulte que votre branche locale ne suit pas la branche distante. Comme le dit ssasi, vous devez utiliser les commandes suivantes:

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

J'ai résolu mon problème tout à l'heure ....

1
questionKing

Vous devez d'abord Fetch la télécommande (la branche spécifique), puis vous pouvez créer un br local et le suivre avec cette branche distante à l'aide de votre commande (c'est-à-dire checkout avec -b et --track).

0
Raheel Hasan

Vous pouvez utiliser les commandes suivantes: Mise à jour à distance Git, Git fetch, Git checkout -b nom de branche A Origine: nom de brancheB

Je pense que c'est peut-être à cause de votre branche locale ne peut pas dépister une branche distante

0
kang

Vous devriez aller dans le répertoire submodule et lancer git status.

Vous pouvez voir que beaucoup de fichiers ont été supprimés. Vous pouvez courir 

  1. git reset .

  2. git checkout .

  3. git fetch -p

  4. git rm --cached submodules // submoudles est votre nom

  5. git submoudle add .... 

0
knight2016