En algún momento (alrededor de las versiones 1.6.x, creo), git se dio cuenta de los cambios dentro de los submódulos. Eso solo sirve para molestarme:
$ git vendedor de estado | grep modificado: # modificado: proveedor / rieles (contenido modificado)
$ git diff proveedor / diff --git a / vendedor / rieles b / vendedor / rieles --- a / vendedor / rieles +++ b / vendedor / rieles @@ -1 +1 @@ -Subproject commit 046c900df27994d454b7f906caa0e4226bb42b6f + Subproyecto commit 046c900df27994d454b7f906caa0e4226bb42b6f-dirty
Por favor haz que pare?
Editar:
Ok, entonces tengo una respuesta. Ahora tengo otra pregunta:
¿Puedo poner esto ~/.gitconfig
? Desde mi inicial parece que no puedo, y no vi nada prometedor al rozar el parche. (Creo que aún puedo hacer un alias).
Respuestas:
Incluso existe la posibilidad de establecer el modo de ignorar para cada submódulo agregado dentro del archivo .gitmodules.
Justo hoy me encontré con este problema e inmediatamente escribí un artículo en mi blog sobre él después de encontrar una solución: Cómo ignorar los cambios en los submódulos git
La esencia de esto:
Simplemente agregue una línea a ese
.gitmodules
archivo:fuente
git status
trabajar como se esperaba. También necesitas al menos 1.7.4 o mejor, creo..gitignore
archivo, hay una versión privada llamadaexclude
, ubicada en.git/info/
, que no se maneja versión. ¿Existe un archivo correspondiente para el.gitmodules
archivo que le permita suprimir los cambios en el submódulo solo en su instancia del repositorio principal, sin realizar cambios en.gitmodules
?Hay dos tipos de avisos de cambio que puede suprimir.
Lo primero es lo
untracked content
que sucede cuando realiza cambios en su submódulo pero aún no los ha confirmado. El repositorio principal se da cuenta de esto y logit status
informa en consecuencia:modified: modules/media (untracked content)
Puede suprimir estos con:
Sin embargo, una vez que confirme esos cambios, el repositorio principal volverá a tomar nota y los informará en consecuencia:
Si desea suprimir estos también, debe ignorar los
all
cambiosfuente
.gitignore
archivo, hay una versión privada llamadaexclude
, ubicada en.git/info/
, que no se maneja versión. ¿Existe un archivo correspondiente para el.gitmodules
archivo que le permita suprimir los cambios en el submódulo solo en su instancia del repositorio principal, sin realizar cambios en.gitmodules
?ignore = all
parte es útil.Actualización: Vea (y vote a favor ) la respuesta de nilshaldenwang sobre la posibilidad de agregar al
.gitmodules
archivo un parámetro de configuración para ignorar el estado sucio de un submódulo dado.Entonces git 1.7.2 está fuera e incluye la
--ignore-submodules
opción parastatus
.De
git help status
:El valor que yo quiero es
dirty
.Uso un alias porque soy vago:
fuente
ignore=dirty
entradas individuales en el.gitmodules
archivo aquí.Como mencionas, el submódulo parche git: ignora los submódulos sucios para el resumen y el estado está en proceso.
También anunciado en la versión Git 1.7.2-rc2 :
Sentido:
Considerar esto como una opción no es exactamente el enfoque elegido por ahora :
"
git diff
" y "git status
" usarán ese valor de configuración para cada submódulo.El uso de "
--ignore-submodule
" anula este valor predeterminado (y el nuevo parámetro "none" se agregará allí para poder anular la configuración).Otro enfoque para hacer que el estado de git (o cualquier comando de git) ignore un submódulo particular está disponible con Git 2.13 (Q2 2017):
Ver más en " Ignorar nuevas confirmaciones para el submódulo git ".
fuente
ignore = dirty
"También puedes usar
para establecer
submodule.ignore = dirty
en su.git/config
archivo.--global
establecerá la bandera de ignorar en su~/.gitconfig
y se aplicará a todos sus repositorios. Sin él, debería establecerse.git/config
solo para el repositorio en el que se encuentra actualmente.La única documentación que puedo encontrar sobre esto está
submodule.<name>.ignore
en los documentos de git-config . Lo moví de un archivo .gitmodules a mi ~ / .gitconfig y todavía funciona para mí.fuente
Necesitas agregar
a .gitmodules
fuente
Entonces git v1.7.2-rc2 tiene lo que quiero:
Construyendo tu propio git howto:
fuente
git clone git://git.kernel.org/pub/scm/git/git.git git
.He respondido esta pregunta aquí con mayor detalle.
Solo corre
para agregar una opción de configuración local para ignorar esos cambios.
fuente
Puede que no desee añadir
ignore = dirty
a.gitmodules
, es posible que desee ser más selectivos acerca de los cambios que deseabas hacer caso.Para hacer eso, agregue patrones a
.git/submodule_foo/bar/info/exclude
, dondesubmodule_foo/bar/
está la ruta del submódulo.Los patrones son similares a los patrones que agregaría
.gitignore
, siendo la raíz el directorio de submódulos. Por ejemplo, este patrón ignora elbuild
directorio en el submódulosubmodule_foo/bar/
:fuente