Featured image of post ¿Por qué Git no rastrea carpetas vacías? ¿Qué son .gitkeep y .gitignore?

¿Por qué Git no rastrea carpetas vacías? ¿Qué son .gitkeep y .gitignore?

Profundice en por qué Git ignora las carpetas vacías y cómo utilizar correctamente .gitkeep y .gitignore para gestionar la estructura de directorios del proyecto. Incluye ejemplos prácticos y mejores prácticas.

En pocas palabras, .gitkeep es un archivo ficticio convencional. Su existencia cumple un único propósito: forzar a Git a rastrear una carpeta que de otro modo debería estar vacía.

¿Por qué es necesario?

La lógica de diseño de Git es “rastrear cambios en archivos”, no “rastrear carpetas”. Si su proyecto contiene una carpeta vacía, Git la ignorará por completo y no la subirá a GitHub ni a su servidor.

Esto crea un problema: a veces su código requiere que exista un directorio determinado para ejecutarse, pero no desea subir datos de prueba o archivos temporales. Si el directorio no existe, el programa podría fallar.

Estas carpetas suelen ser:

  • logs/: Para archivos de registro
  • uploads/: Archivos subidos por los usuarios
  • tmp/: Archivos temporales
  • cache/: Datos de caché

Estos directorios son necesarios en tiempo de ejecución, su contenido no debe confirmarse (commit), pero la carpeta en sí debe existir.

Cómo funciona

Para “engañar” a Git para que mantenga esta carpeta, colocamos un archivo oculto sin función real dentro de ella, haciendo que Git piense: “¡Oh! Hay algo aquí, necesito registrarlo”.

Analogía práctica:

Imagine que está construyendo una casa (escribiendo un proyecto):

Archivo Descripción
.gitignore Como una etiqueta de “No tirar a la basura”, que le dice al limpiador (Git) qué cosas (como comida caducada, papel usado) absolutamente no deben trasladarse a la nueva casa.
.gitkeep Como una “Caja de reserva”. La nueva casa aún no está amueblada, pero necesita reservar espacio para el trastero, así que coloca una caja allí para que los encargados de la mudanza sepan que esta área es parte de la casa y no debe demolerse.

¿Cómo usarlo?

  1. Cree un archivo llamado .gitkeep dentro de la carpeta vacía.
  2. El contenido del archivo puede estar vacío, o puede escribir “Keep this directory”.
  3. Haga git add y commit de este archivo.

Comparando .gitkeep vs .gitignore

Característica .gitkeep .gitignore
Estado oficial No oficial (Solo una convención de la comunidad) Oficial (Función integrada de Git)
Función principal Mantener una carpeta, evitar que Git la olvide Excluir archivos, evitar que Git los rastree
Escenarios comunes Carpetas de logs vacías, carpetas de caché Archivos de contraseñas, node_modules, archivos temporales

Consejo práctico: Pensar fuera de la caja

Aunque .gitkeep se usa comúnmente, en realidad no es parte oficial de Git. De hecho, podría usar README.md o .placeholder para lograr el mismo efecto. Pero, ¿por qué todos prefieren .gitkeep? Porque se explica por sí mismo: “Este archivo no hace nada más que evitar que Git elimine esta carpeta”.

Si quiere parecer un poco más profesional, hay un enfoque más creativo y funcional que simplemente usar .gitkeep:

Coloque un .gitignore en la carpeta vacía con el siguiente contenido:

# Ignorar todo en este directorio
*
# Pero no me ignores a mí (este archivo .gitignore en sí)
!.gitignore

Esto asegura que usted mantenga la carpeta mientras garantiza que los archivos basura dentro nunca se confirmen accidentalmente. Este es el verdadero método “a prueba de tontos” (Foolproof).

Conclusión

  • .gitkeep es un compromiso humano con la lógica de diseño de Git.
  • No es una especificación oficial, pero se ha convertido en un estándar de facto para los desarrolladores.
  • Lo verdaderamente importante es entender cómo funciona .gitignore; .gitkeep es solo una pequeña herramienta para ayudar a Git a “entender” las carpetas vacías.

Reference

All rights reserved,未經允許不得隨意轉載
Creado con Hugo
Tema Stack diseñado por Jimmy