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

118

J'essaie d'ajouter quelques sous-modules à mon .vim/bundlesrépertoire, et lorsque j'essaye d'ajouter ce dépôt 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 cela?

Si je clone le même dépôt dans un répertoire de test (pas via la commande de sous-module), cela fonctionne correctement et crée les fichiers attendus.

mat b
la source

Réponses:

212

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

Lisachenko
la source
2
Merci, ça fait l'affaire. C'était un peu non évident au début que depuis que je clonais .vim/bundle/vim-scalale chemin à supprimer était.git/modules/.vim/bundle/vim-scala
matt b
2
Si vous êtes sur Windows, notez que le répertoire sous .git / modules peut ne pas apparaître sauf si vousdir /AH
paxos1977
13
Après avoir vu supprimer ce .git/modules/path/to/submodulerépertoire et essayer de rajouter le sous-module, je reçois l'erreur Le chemin suivant est ignoré par l'un de vos fichiers .gitignore: chemin / vers / sous-module .
Drew Noakes
1
@Drew Noakes supprime .vim / bundle / vim-scala créé après la première exécution de git submodule add
Piotr Król
Sur Windows, vous pouvez également utiliser les options de l'Explorateur Windows (au même endroit que vous choisiriez pour voir les extensions de fichier) pour voir les dossiers cachés dans l'interface graphique et les supprimer.
user83358
13

Vous devez ajouter un sous-module dans un dépôt existant, ce dépôt doit être dans un état pour ajouter et valider le lien de sous-module, et le dépôt de sous-module lui-même doit avoir un commit à extraire.

Maintenant, le dépôt de sous-module lui-même doit être correct si vous pouvez créer un clone régulier ailleurs. Cependant, cela ressemble à une submodule addplainte si le dépôt est vide alors que le clone ne l'est pas. Ce type suggère que cela peut être corrigé en exécutant à nouveau la même submodule addcommande.

Si le dépôt interne n'est pas vide, cochez le dépôt que vous souhaitez contenir le sous-module. Accédez au même répertoire dans lequel vous avez exécuté git submodule addet exécuté git status, et git branchpour vérifier que votre dépôt conteneur a au moins une branche créée et n'est pas dans un état étrange.

Inutile
la source
J'ai vérifié toutes ces choses. Lorsque je récupère le dépôt souhaité dans un autre répertoire, il contient de nombreux fichiers et une masterbranche. Le masterdépôt auquel j'essaie d'ajouter celui-ci en tant que sous-module est sur la branche, n'a pas de problèmes évidents (le statut renvoie des fichiers modifiés, mais c'est tout), et le plus étrange de tous est que je peux ajouter d'autres sous-modules très bien à ce référentiel .
matt b
Aussi étrange: après l' fatalavertissement de mon OP, git laisse un répertoire vide à .vim/bundle/vim-scala. J'ai également remarqué que même si ce .gitmodulesn'est pas touché, il a ajouté quelques lignes faisant référence à ce repo github.com .git/config, mais après avoir supprimé celles-ci, j'obtiens toujours le même fatalmessage d'erreur.
matt b
7
+1 Argh! This guy suggests this is fixable by just running the same submodule add command again.. J'ai lutté contre ce problème en essayant de trouver une réponse sensée et cela l'a finalement résolu. C'était pour git 1.8.0 sous MSYS lors de la création d'un sous-module à partir de BitBucket, donc si vous êtes dans la même situation, essayez d'abord ceci.
Aaron Newton
Ajouter deux fois a fonctionné pour moi aussi. Mais je ne comprends pas pourquoi. Une explication?
Elise
Ajout deux fois ici aussi. J'aimerais comprendre pourquoi
Vinicius Dantas
12

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

git submodule add -b <branch> <repository>
k4nar
la source
1
Dans mon cas, le repo a été nouvellement créé et n'a donc pas de fichiers ni de branches (était vide), alors git submodule add -b master <repo.git> <folder>aidé
vladkras
C'était mon problème, mon sous-module n'avait que 2 branches, aucune d'entre elles n'est une mastersolution qui fonctionnait pour moi.
Guerneen4
0

Comme indiqué par @ drew-noakes, cela peut être causé en essayant d'ajouter un sous-module à l'aide d'un nom de répertoire répertorié dans votre fichier .gitignore .

John McFarlane
la source