web-dev-qa-db-fra.com

"Vous êtes sur une branche à naître" lors de l'ajout d'un sous-module git

J'essaie d'ajouter quelques sous-modules à mon répertoire .vim/bundles et, lorsque j'essaie d'ajouter ce référentiel particulier, Git me donne une erreur étrange que je n'ai jamais vue auparavant:

$ git submodule add -f git://github.com/derekwyatt/vim-scala.git .vim/bundle/vim-scala
fatal: You are on a branch yet to be born
Unable to checkout submodule '.vim/bundle/vim-scala'

Une idée de ce qui peut causer ça?

Si je clone le même référentiel dans un répertoire de test (pas à l'aide de la commande submodule), cela fonctionne correctement et crée les fichiers attendus.

114
matt b

Pour corriger cette erreur, vous devez supprimer le dossier avec le même chemin d'accès au sous-module dans le répertoire .git/modules/. Cette erreur peut se produire lorsque l'URL était incorrecte pour le sous-module pour la première fois lorsque le sous-module a été ajouté.

203
lisachenko

Vous devez ajouter un sous-module dans un référentiel existant, ce référentiel doit être dans un état permettant d'ajouter et de valider le lien de sous-module, et le référentiel de sous-module lui-même doit avoir une validation à extraire.

Maintenant, le repo de sous-module lui-même doit être correct si vous pouvez créer un clone normal ailleurs. Cependant, il semble que submodule add se plaint si le référentiel est vide, contrairement au clone. Ce gars suggère que ceci est réparable en exécutant simplement la même commande submodule add à nouveau.

Si le référentiel interne est pas vide, cochez le référentiel que vous souhaitez contenir le sous-module. Accédez au même répertoire que celui où vous avez exécuté git submodule add et exécutez git status et git branch pour vérifier que votre référentiel contenant a au moins une branche créée et qu'il ne se trouve pas dans un état étrange.

12
Useless

Cette erreur peut se produire si vous ajoutez un sous-module qui n'a pas de branche master. Si vous souhaitez utiliser une autre branche lors de l'ajout du sous-module (develop par exemple), vous pouvez utiliser la commande suivante:

git submodule add -b <branch> <repository>
11
k4nar

Comme @ drew-noakes le mentionne, cela peut être provoqué par la tentative d'ajouter un sous-module en utilisant un nom de répertoire répertorié dans votre fichier .gitignore .

0
John McFarlane