Git y carpetas vacías

Como es bien sabido 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 los necesitan absolutamente, 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 pueden garantizar que se ignoren otros archivos en las carpetas.


Primero creamos un repositorio de prueba y creamos algunas subcarpetas:

434e6616f335599d241482f169f68f1b

Ahora tenemos la siguiente estructura de carpetas:

434e6616f335599d241482f169f68f1b

Un estado de git -u no nos muestra cambios como se esperaba:

Git y carpetas vacías

Ahora usamos 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 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

Usamos la sintaxis de doble estrella :

434e6616f335599d241482f169f68f1b

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

Ahora creamos algunos archivos de prueba:

434e6616f335599d241482f169f68f1b

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

Git y carpetas vacías

Espalda