Como se menciona en la publicación del blog de Mark Longair, Git Submodules Explained ,
Las versiones 1.7.0 y posteriores de git contienen un cambio molesto en el comportamiento del submódulo git.
Los submódulos ahora se consideran sucios si tienen archivos modificados o archivos no rastreados , mientras que anteriormente solo sería el caso si HEAD en el submódulo señalaba la confirmación incorrecta.
El significado del signo más ( +
) en la salida del submódulo git ha cambiado, y la primera vez que te encuentras con esto toma un poco de tiempo descubrir qué está mal, por ejemplo, mirando a través de registros de cambios o usando git bisect en git .git para encontrar el cambio. Hubiera sido mucho más amable para los usuarios introducir un símbolo diferente para "en la versión especificada, pero sucio".
Puedes arreglarlo de la siguiente manera:
ya sea confirmando o deshaciendo los cambios / evoluciones dentro de cada uno de sus submódulos, antes de volver al repositorio principal (donde el diff ya no debería reportar archivos "sucios"). Para deshacer todos los cambios en su submódulo solo cd
en el directorio raíz de su submódulo y hacergit checkout .
dotnetCarpenter comenta que puedes hacer:git submodule foreach --recursive git checkout .
o agregue --ignore-submodules
a su git diff
, para ignorar temporalmente esos submódulos "sucios".
Nuevo en Git versión 1.7.2
Como Noam comenta a continuación , esta pregunta menciona que, desde la versión 1.7.2 de git, puede ignorar los submódulos sucios con:
git status --ignore-submodules=dirty
git commit -a
sin tener que preocuparse de agregar estos cambios. Aunque están marcadosM
en el frente, no terminarán en tu commit.