update submodule remove recursive git git-submodules

remove - git submodule pull



¿Por qué git submodule update no es automático en git checkout? (2)

Al cambiar de sucursal con git checkout, asumo que la mayoría del tiempo desearía actualizar sus submódulos.

  • ¿En qué situación no desea actualizar los submódulos después de cambiar?
  • ¿Qué se rompería si esto se hiciera automáticamente por git checkout?

Actualizado con el ejemplo:

  • La rama A tiene un submódulo S en 3852f1
  • La rama B tiene el submódulo S en fd72d7

En la rama A, git checkout B dará como resultado una copia de trabajo de la rama B con el submódulo S en 3852f1 (con una S modificada). la actualización del submódulo de git comprobará S en fd72d7.


Creo que los submódulos que no se actualizan automáticamente están en línea con los objetivos de desarrollo de Git. Git está diseñado para funcionar en un modo distribuido y no supone que incluso pueda conectarse a un repositorio no local a menos que se lo indique explícitamente. Git no auto-refrescar un submódulo sería el comportamiento esperado cuando se piensa de esa manera.

Dicho esto, si sabe que siempre desea que se incluyan esos submódulos y sabe que nunca se derivaría de esos submódulos a otro repositorio local, entonces no debería romper nada si los actualiza automáticamente después de un pago y envío.


git checkout --recurse-submodules se agregó a git 2.13

Esto se menciona en las notas de la versión en: https://github.com/git/git/commit/e1104a5ee539408b81566066aaa6963cb87d5cd6#diff-c24776ff22455a30fbb78e378b7df0b0R139

Se agregó la opción submodule.recurse a git 2.14

Establecer como:

git config --global submodule.recurse true

man git-config dice:

Especifica si los comandos retroceden en submódulos de forma predeterminada. Esto se aplica a todos los comandos que tienen una opción --recurse-submodules . El valor predeterminado es falso.