2012-01-13 14 views
9

Creé un submódulo de git y lo puse en nuestro repositorio principal. Esto funcionó bien y puedo ver el submódulo en el repositorio a través de un navegador.La actualización del submódulo de git falla con el error en una máquina pero funciona en otra máquina

Para probar funciona bien, traté de obtener la fuente es un árbol de compilación nuevo. Primero ejecuté git submodule init y luego git submodule update <submodule-name>.

Esta falla con el error:

error: pathspec 'x/mypkg' did not match any file(s) known to git. Did you forget to 'git add' 

He intentado añadir a .gitmodules la url al submódulo pero sin suerte.

Respuesta

3

Esto es probable porque usted o alguien de su equipo tiene cambios en su submódulo que no se publicaron (confirmados, pero no enviados al servidor remoto). Luego publicaron el superproyecto con referencias a la confirmación de git en el submódulo que no existe en el servidor de git. Así que git está tratando de desplegar un submódulo Git commit ID que no puede encontrar.

Este sería el caso si los cambios están en un repositorio en otro lugar en su máquina o en otra máquina.

Para resolverlo, diríjase a ese repositorio que hace referencia que confirma y publica (inserta) los cambios del submódulo en el servidor. O cambie el submódulo para que apunte a una ID de confirmación diferente.

+0

Creo que tuve un caso muy similar pero no estoy seguro todavía. Tenía una biblioteca que agregué como un nuevo submódulo y otro submódulo utiliza esta biblioteca. Primero modifiqué la biblioteca, la comprometí, la empujé y luego la modifiqué y empujé el submódulo que la usa. Nadie más está modificando estos en mi caso. Extrañamente, no puedo actualizar el submódulo que usa la biblioteca también. –

+0

@GauravSinha En cualquier caso, si obtiene el error en la actualización del submódulo 'git', es porque el repositorio de git no puede encontrar la ID de confirmación de git a la que apunta el submódulo. Debido a que está construyendo un "árbol nuevo" como lo expresó, la URL es incorrecta o no presionó la confirmación a la que apunta el submódulo. –

+0

parece que puede ser la URL incorrecta, permítanme intentarlo, con los dedos cruzados .. –

1

Para obtener nuevos submódulos en otros repositorios, creo que necesita ejecutar git submodule init una vez antes de comenzar a ejecutar git submodule update; esto registrará el nuevo submódulo desde .gitmodules en .git/config.

+0

He ejecutado git submódulo init antes de ejecutar el comando de actualización git submódulo. Desafortunadamente no ayuda. Actualicé mi pregunta para evitar confusiones. –

13

También recibí este error al usar TortoiseGit mientras trataba de actualizar los submódulos que no están en el índice. Es decir, existen en .gitmodules pero no se han agregado correctamente al repositorio.

La solución es volver a agregarlos manualmente mediante las rutas especificadas en .gitmodules. Puede utilizar la interfaz de usuario TortoiseGit o ejecutar esto en la línea de comandos para cada módulo ...

git submodule add <url> <path> 

Re-adding a git submodule

(Sé que esto probablemente no es la solución para el cartel original, pero es de esperar que ayuda otros buscando en Google esto)

+0

Tuve que agregar '- -force' para hacer que esto funcione. –

Cuestiones relacionadas