2011-05-15 25 views
37

He añadido un submódulo en mi árbol principal de la carpeta git y no han cambiado nada pero está apareciendo modificado. ¿Qué debo hacer al respecto?submódulo git los archivos modificados de estado

$ git status 
# On branch master 
# Changed but not updated: 
# (use "git add <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
# modified: example.com/soundmanager 
# 
no changes added to commit (use "git add" and/or "git commit -a") 

He intentado una actualización del submódulo de git, pero no hace nada.

+3

me encontré con esto cuando yo tenía un repositorio git en un subdirectorio que no conocía, lo que me causó confusión. Siguió enumerando el directorio como modificado, a pesar de que había agregado los archivos al repositorio padre. Gracias por la pregunta: ¡aclararon las cosas muy bien! –

Respuesta

56

La forma en que se informa el estado de los submódulos de git ha cambiado mucho con respecto a las versiones recientes de git, por lo que realmente debería incluir la salida de git --version para que podamos ayudar con precisión.

Sin embargo, en cualquier caso, la salida del git diff example.com/soundmanager debe decirle más. Si ve salida con el mismo nombre cometer, pero con -dirty añadido a la nueva versión, por ejemplo:

diff --git a/example.com/soundmanager b/example.com/soundmanager 
--- a/example.com/soundmanager 
+++ b/example.com/soundmanager 
@@ -1 +1 @@ 
-Subproject commit c5c6bbaf616d64fbd873df7b7feecebb81b5aee7 
+Subproject commit c5c6bbaf616d64fbd873df7b7feecebb81b5aee7-dirty 

... que eso significa que git status en el submódulo no es limpia - tratar cd example.com/soundmanager y luego a git status ver qué está pasando.

Por otro lado, si usted ve cometer diferentes versiones, por ejemplo:

diff --git a/example.com/soundmanager b/example.com/soundmanager 
index c4478af..c79d9c8 160000 
--- a/example.com/soundmanager 
+++ b/example.com/soundmanager 
@@ -1 +1 @@ 
-Subproject commit c4478af032e604bed605e82d04a248d75fa513f7 
+Subproject commit c79d9c83c2864665ca3fd0b11e20a53716d0cbb0 

... eso significa que la versión de que el submódulo está en (es decir, lo que se ve desde cd example.com/soundmanager && git show HEAD) es diferente de la versión comprometida en el árbol del proyecto principal (es decir, lo que ve en git rev-parse HEAD:example.com/soundmanager). Si el primero es correcto, se debe agregar y guardar la nueva versión del submódulo en su proyecto principal, con algo como:

git add example.com/soundmanager 
git commit -m "Update the soundmanager submodule" 

Por otro lado, si este último es lo que quiere, se puede cambiar el versión que el submódulo está en con:

git submodule update example.com/soundmanager 
+0

Gracias. 'Versión git 1.7.0.4' – Poe

+0

'git diff' indicó -dirty, y git status mostró todos los archivos con las modificaciones. Gracias por la respuesta, me preocupaba modificar un submódulo y comprometerlo. Agregué + comprometí el submódulo, y todavía obtengo el -dirty. Parece un problema de final de línea. Entré en el camino y 'git add'. y obtuve un pergamino de estas 'advertencias: CRLF será reemplazado por LF' Tenía la entrada autocrlf establecida. – Poe

+0

Encontré un repositorio con una versión actualizada de git. 'git versión 1.7.5.1' Instalado eso, y ya no tiene el problema, así que estaré contento con ese resultado por el momento. – Poe

4

llegué en este estado mediante la adición de un submódulo por error mediante la adición de un directorio en concreto en lugar de limitarse a añadir el contenido de un directorio nuevo.

necesitaba sólo para quitar el submódulo de esta manera:

git rm --cached path/to/my/new_directory 

Y a continuación, añadir el contenido como si la intención de, en primer lugar:

git add path/to/my/new_directory/* 
Cuestiones relacionadas