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 registrouploads/: Archivos subidos por los usuariostmp/: Archivos temporalescache/: 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?
- Cree un archivo llamado
.gitkeepdentro de la carpeta vacía. - El contenido del archivo puede estar vacío, o puede escribir “Keep this directory”.
- Haga
git addycommitde 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
.gitkeepes 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;.gitkeepes solo una pequeña herramienta para ayudar a Git a “entender” las carpetas vacías.