¿Cómo administro el desarrollo activo en los submodules de git?

Tengo un proyecto de git con 3 submodules de git. Ahora estoy desarrollando activamente (cambiando de código) en los 4 proyectos, y normalmente lo hago usando vim, desde el directory base del proyecto principal.

Entonces, si uso el git status , veo el estado del proyecto principal. Si utilizo el git submodule status , entonces veo los sha's de confirmación de los subproyectos (no estoy seguro de por qué eso es útil todos los días), si uso git submodule foreach git status veo qué files han cambiado, en relación con el submodule que consideró en ese momento.

Entonces, ¿qué se considera la forma más fácil de gestionar esto? ¿Realmente tengo que cambiar el directory en cada submodule cuando quiero confirmar algo? Cómo puedo comprometer, desde fuera del submodule ( git submodule foreach git commit -m "message" path/to/file/in/one/submodule funcionaría, pero genera múltiples errores y se siente arriesgado)

git --git-dir=path/to/submodule {status,diff} y funcionó bien, pero git --git-dir=path/to/submodule commit -m "message" path/to/file/in/one/submodule no funciona, y solo se queja de fatal: ambiguous argument 'path/to/file/in/one/submodule': unknown revision or path not in the working tree.

Da la casualidad que cada uno de los submodules es una variante de una salida dispersa del mismo proyecto, por lo que no debería haber superposition, pero espero que haya muchos submodules en el futuro, por lo que hay alguna forma de hacer efectivamente el git submodule command <submodule> git commit -m "" <path> en un solo submodule