“Estás en una rama aún por nacer” al agregar el submódulo git

4 minutos de lectura

Estoy intentando agregar algunos submódulos a mi .vim/bundles directorio, y cuando intento agregar este repositorio en particular, Git me da un error extraño que nunca antes había visto:

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

¿Alguna idea de qué puede causar esto?

Si clono el mismo repositorio en un directorio de prueba (no a través del comando del submódulo), funciona bien y crea los archivos esperados.

Para corregir ese error, debe eliminar la carpeta con la misma ruta al submódulo dentro .git/modules/ directorio. Este error puede ocurrir cuando la URL era incorrecta para el submódulo por primera vez cuando se agregó el submódulo.

  • Gracias, eso hizo el truco. Al principio no era un poco obvio que, dado que estaba clonando a .vim/bundle/vim-scala la ruta para borrar era .git/modules/.vim/bundle/vim-scala

    – mate b

    22 de agosto de 2012 a las 14:17


  • Si está en Windows, tenga en cuenta que es posible que el directorio bajo .git/modules no aparezca a menos que dir /AH

    – paxos1977

    15/09/2012 a las 22:47

  • Después de ver eliminar eso .git/modules/path/to/submodule directorio e intento volver a agregar el submódulo, recibo el error La siguiente ruta es ignorada por uno de sus archivos .gitignore: ruta/a/submódulo.

    – Drew Noakes

    18 de septiembre de 2012 a las 15:46

  • @Drew Noakes eliminó .vim/bundle/vim-scala creado después de la primera ejecución del agregado del submódulo git

    – Piotr Król

    20 de febrero de 2013 a las 14:01

  • Este, junto con inútiles’ respuesta resolvió mi problema. Una respuesta ideal sería una combinación de ambos. ¡Gracias!

    – polynomial_donut

    2 de junio de 2017 a las 15:32

Este error puede ocurrir si está agregando un submódulo que no tiene un master rama. Si desea utilizar otra rama al agregar el submódulo (develop por ejemplo), puede usar el siguiente comando:

git submodule add -b <branch> <repository>

  • En mi caso, el repositorio se creó recientemente y, por lo tanto, no tenía archivos ni ramas (estaba vacío), por lo que git submodule add -b master <repo.git> <folder> ayudó

    – vladkras

    17 de noviembre de 2016 a las 15:24


  • Este fue mi problema, mi submódulo tenía solo 2 ramas, ninguna de ellas es un master tu solución funcionó para mí.

    – Guerneen4

    16 de marzo de 2017 a las 14:10

Necesitas agregar un submódulo en el interior un repositorio existente, ese repositorio debe estar en un estado para agregar y confirmar el enlace del submódulo, y el repositorio del submódulo en sí debe tener un compromiso para verificar.

Ahora, el repositorio del submódulo en sí debe estar bien si puede crear un clon regular en otro lugar. Sin embargo, parece que submodule add se queja si el repositorio está vacío mientras que el clon no lo está. Este chico sugiere que esto se puede arreglar simplemente ejecutando el mismo submodule add comando de nuevo.

Si el repositorio interno es no vacío, marque el repositorio que desea contener el submódulo. Cambie al mismo directorio donde ejecutó git submodule addy correr git statusy git branch para verificar que su repositorio contenedor tiene al menos una rama creada y no está en un estado extraño.

  • He verificado todas estas cosas. Cuando reviso el repositorio deseado en otro directorio, tiene muchos archivos y un master rama. El repositorio al que estoy tratando de agregar este como un submódulo está en el master branch, no tiene problemas obvios (el estado devuelve algunos archivos modificados, pero eso es todo), y lo más extraño de todo es que puedo agregar otros submódulos perfectamente a este repositorio.

    – mate b

    9 de agosto de 2012 a las 17:48

  • También extraño: después de la fatal advertencia de mi OP, git deja un directorio vacío en .vim/bundle/vim-scala. También me di cuenta de que a pesar de que .gitmodules está intacto, agregó algunas líneas que se refieren a este repositorio de github.com para .git/configpero después de eliminarlos sigo obteniendo lo mismo fatal mensaje de error.

    – mate b

    9 de agosto de 2012 a las 17:49

  • +1 Argh! This guy suggests this is fixable by just running the same submodule add command again.. He estado luchando contra este problema tratando de encontrar una respuesta sensata y esto finalmente lo solucionó. Esto fue para git 1.8.0 bajo MSYS al crear un submódulo de BitBucket, por lo que si se encuentra en la misma situación, intente esto primero.

    – Aarón Newton

    28 de diciembre de 2012 a las 6:10

  • Agregar dos veces también funcionó para mí. Pero no entiendo por qué. ¿Alguna explicación?

    – Elliot

    1 de marzo de 2018 a las 5:04

  • Agregando dos veces aquí también. Aunque me encantaría entender por qué

    – Vinicius Dantas

    5 de agosto de 2019 a las 12:07

Como mencionó @drew-noakes, esto puede deberse al intentar agregar un submódulo usando un nombre de directorio que se encuentra en su .gitignore expediente.

¿Ha sido útil esta solución?