2012-08-09 21 views
109

Estoy intentando agregar algunos submódulos a mi directorio .vim/bundles, y cuando intento agregar este repo en particular, Git me da un extraño error que nunca visto anteriormente:"Estás en una rama aún por nacer" al agregar el submódulo de git

$ 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 de submódulo), funciona bien y crea los archivos esperados.

Respuesta

194

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

+2

Gracias, eso funcionó. Al principio no era tan obvio que, como estaba clonando en '.vim/bundle/vim-scala', la ruta para eliminar era' .git/modules /.vim/bundle/vim-scala' –

+2

Si está en Windows, tenga en cuenta que el directorio en .git/modules puede no aparecer a menos que 'dir/AH' – paxos1977

+13

Después de ver elimine' .git/modules/path/to/submodule' directorio e intentar volver a agregar el submódulo, recibo el error _La siguiente ruta es ignorada por uno de sus archivos .gitignore: path/to/submodule_. –

12

es necesario agregar un submódulo dentro de una cesión temporal existente, que repo tiene que estar en un estado de añadir & cometer el enlace submódulo, y el propio repo submódulo debe tener una confirmación a la salida.

Ahora, el repositorio de submódulos debe estar bien si puede crear un clon normal en otro lugar. Sin embargo, parece que submodule add se queja si el repositorio está vacío mientras que el clónico no. This guy sugiere que esto se puede reparar simplemente ejecutando el mismo comando submodule add nuevamente.

Si el repositorio interno es no vacío, compruebe el repositorio que desea contienen el submódulo. Cambie al mismo directorio donde ejecutó git submodule add, y ejecute git status, y git branch para verificar que su contenedor de reserva tenga al menos una rama creada y que no esté en un estado extraño.

+0

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

+0

También es extraño: después de la advertencia 'fatal' de mi OP, git deja un directorio vacío en' .vim/bundle/vim-scala'. También noté que a pesar de que '.gitmodules' está intacto, agregó algunas líneas que se refieren a este repositorio de github.com a' .git/config', pero después de eliminarlas todavía recibo el mismo mensaje de error 'fatal'. –

+6

+1 Argh! 'Este tipo sugiere que esto se puede reparar simplemente ejecutando el mismo comando de agregar submódulo nuevamente. He estado luchando con este problema tratando de encontrar una respuesta sensata y esto finalmente lo solucionó. Esto fue para git 1.8.0 en MSYS al crear un submódulo de BitBucket, por lo que si estás en la misma situación, intenta esto primero. –

10

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

git submodule add -b <branch> <repository> 
+1

En mi caso el repositorio fue creado recientemente y por lo tanto no tenía ningún archivo y ramas (estaba vacío), por lo que 'git submodule add -b master ' ayudó – vladkras

+0

Este era mi problema mi submódulo tenía solo 2 ramas ninguna de ellas es un 'maestro' tu solución funcionó para mí. – Guerneen4

0

Como aludido por @ Drew Noakes, esto puede ser causado por el intento de añadir un submódulo utilizando un nombre de directorio que figura en su archivo .gitignore.

Cuestiones relacionadas