![¿Obtener `git commit -a` para ignorar los submódulos?](https://rvso.com/image/1555364/%C2%BFObtener%20%60git%20commit%20-a%60%20para%20ignorar%20los%20subm%C3%B3dulos%3F.png)
El comportamiento de git commit -a
parece 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 -a
para ignorar los submódulos? Eché un vistazo git help config
y no vi nada.
Una alternativa (menos buena) podría ser git status
aclarar de un vistazo si git commit -a
se 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>.ignore
opció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 -a
los 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.