Git usa subtree o submodule para administrar resources externos

Leí mucho sobre lo horrible que se supone que es el submodule de git, pero no estoy seguro de si eso es solo el gemido de las personas que sienten que tiene límites o si tiene problemas serios (especialmente con respecto a mi caso de uso).

Solo quiero include diferentes repos en mi repos como este

website/ libs/ js/ fs-slides [external] fs-dialog [external] 

y tiene la posibilidad de actualizar esos repos fácilmente. Por lo que yo entiendo, no hay una posibilidad fácil de include solo un file de un repository, ¿verdad? (Pero eso está bien.)

¿Debo usar submodules para esto?
¿O hay algún problema con eso? ¿O es el subtree mucho más fácil?

El submodule es muy adecuado para su caso, especialmente porque no le molesta include esos subrepos en su propio subdirectory.

El principal problema grave que podría tener el uso de submodules es cuando los actualiza mientras tiene actualizaciones en progreso, como se describe en " cómo funciona exactamente el submodule git ":

Si olvida establecer una bifurcación al realizar confirmaciones en un submodule, dichas confirmaciones se realizarán en un HEAD desconectado, y los cambios en curso se perderán en la próxima git submodule update (puede recuperarlos a través del reflog , si está activado) para su repository de submodules).

Luego, como comenta Michael , y como detallo en el enlace de arriba, necesitas empujar el submodule hacia arriba antes de confirmar y presionar el repository padre (para evitar empujar las asignaciones de submodules no publicados)