Git y carpetas vacías

Dado que Git no conoce carpetas, solo archivos, las estructuras de carpetas vacías no terminan en el repositorio. Sin embargo, dado que muchos marcos y proyectos necesitan absolutamente esto, deberían terminar allí. Una práctica común es crear los llamados archivos de marcador de posición (a menudo llamados .gitkeep), que especifican implícitamente la estructura de la carpeta. Estos archivos se pueden crear fácilmente y, si lo desea, también asegurarse de que se ignoren otros archivos de las carpetas.


Primero creamos un repositorio de prueba y creamos algunas subcarpetas:

434e6616f335599d241482f169f68f1b

Ahora tenemos la siguiente estructura de carpetas:

434e6616f335599d241482f169f68f1b

Como era de esperar, un estado de git -u no nos muestra cambios:

Git y carpetas vacías

Ahora usaremos find para crear los archivos de marcador de posición en todas las ubicaciones requeridas:

434e6616f335599d241482f169f68f1b

Ahora hemos recibido la siguiente estructura de carpetas / archivos:

434e6616f335599d241482f169f68f1b

Un estado de git -u ahora nos muestra que todas las carpetas (implícitamente) terminan en el repositorio:

Git y carpetas vacías

Si ahora queremos asegurarnos de que la estructura de carpetas siempre termine en el repositorio, pero no en ningún archivo (aparte de los archivos de marcador de posición), creamos un gitignore:

434e6616f335599d241482f169f68f1b

Hacemos uso de la Sintaxis de doble estrella:

434e6616f335599d241482f169f68f1b

La primera línea ignora de forma recursiva todos los archivos y carpetas (en cualquier nivel) en la carpeta "foo", la segunda línea excluye de forma recursiva todas las carpetas de esta regla (en cualquier nivel) y la tercera línea excluye todos los archivos .gitkeep (en cualquier nivel) .

Ahora creemos algunos archivos de prueba:

434e6616f335599d241482f169f68f1b

Un estado de git -u ahora nos muestra el resultado deseado:

Git y carpetas vacías

Atrás