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.
'
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
)
FWIW: Si vous avez une faute de frappe dans votre nom de branche, vous obtiendrez la même erreur.
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
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
Vous pouvez suivre ces étapes lorsque vous tombez sur ce problème:
é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)
» 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.
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
Si vous avez des espaces dans votre branche, vous obtiendrez cette erreur.
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 ....
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).
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
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
git reset .
git checkout .
git fetch -p
git rm --cached submodules
// submoudles est votre nom
git submoudle add ....