¿Obtener `git commit -a` para ignorar los submódulos?

¿Obtener `git commit -a` para ignorar los submódulos?

El comportamiento de git commit -aparece ser incluir cambios en los submódulos, si tienen nuevas confirmaciones dentro de ellos. Esto no es lo que normalmente quiero y, a veces, me encuentro presionando accidentalmente una confirmación con cambios de submódulo que no tenía intención de incluir.

¿Hay alguna manera de configurarlo git commit -apara ignorar los submódulos? Eché un vistazo git help configy no vi nada.

Una alternativa (menos buena) podría ser git statusaclarar de un vistazo si git commit -ase incluiría un submódulo. Actualmente muestra

modified:   submodule (modified content)

o

modified:   submodule (new commits)

y esos son molestamente similares. Parece que la submodule.<name>.ignoreopción de configuración puede hacer algo parecido a lo que quiero. Pero idealmente todavía me gustaría ver cambios en los submódulos, pero no en el mismo lugar que todos mis otros cambios, a menos que git commit -alos agregue.

Respuesta1

Puede configurar submodule.ignore en git config o en el archivo .gitmodules.

NOTA: GIT es un poco estúpido con esto. Si configura ignore = all, para obtener un comportamiento sensato con git commit -a, TAMBIÉN ignorará el submódulo en git show/diff cuando los agregue EXPLÍCITAMENTE. La única forma de solucionar este último es utilizar la opción de línea de comando --ignore-submodule=none.

NOTA 2: Se supone que la configuración diff.ignoreSubmodules puede establecer la opción de línea de comando predeterminada --ignore-submodule, pero ha estado rota durante años y no hace nada ya que .gitmodules gana el concurso, por lo que solo se obtendrán opciones explícitas de línea de comando Tu comportamiento cuerdo.

Respuesta2

Si no tiene un montón de submódulos, lo que encontré más conveniente es primero confirmar todos y luego ejecutar

git reset HEAD^1 submódulo_ruta

Siempre podrás recibir un recordatorio de la sintaxis de este comando si ejecutas git commit --amend sin ningún cambio. Aparecerá cerca de la parte superior de las instrucciones comentadas.

información relacionada