Cualquiera que utilice Git para hacer control de código fuente estará familiarizado con los archivos .gitignore
. Se trata de un archivo de texto, sin nombre y con esta extensión tan descriptiva que se coloca en la carpeta raíz de nuestro proyecto. Lo que contiene son líneas que indican qué archivos queremos que no sean gestionados por Git.
Sin embargo, en ocasiones veremos otros tipos de archivo llamados .gitkeep
, es decir, otros archivos sin nombre y con esa extensión tan particular. Si nos atenemos a lo que dice su extensión (Git Keep" significa "mantener en Git") podría parecer que hacen lo contrario a los anteriores. Pero si los abrimos veremos que están completamente vacíos.
Entonces ¿para qué sirven?
Para responder primero es necesario resaltar un hecho que muchos de los que empiezan a trabajar con Git por primera vez no siempre tienen claro, y es que Git no es capaz de gestionar carpetas vacías. Esto se debe al diseño del área de staging del índice de un repo Git, que solamente permite listar archivos. Esto significa que las carpetas no se añaden al control de código con Git: se añaden archivos únicamente.
En realidad, cuando añades una carpeta al control de código fuente con:
git add MiCarpeta
o empleando la interfaz visual que prefieras, que hace esto por debajo, lo que ocurre es que Git añade los archivos que haya dentro de esa carpeta y en sus metadatos van incluida la carpeta en la que están. Pero si la carpeta está vacía, ese comando no hará nada.
Es muy habitual, no obstante, que los programadores creen una estructura de carpetas vacías al inicio de un proyecto con el objetivo de ir organizando posteriormente los archivos dentro de ellas: controladores, vistas, modelos, bibliotecas auxiliares, controles, etc... Si el proyecto se comparte entre varias personas (lo habitual) es un fastidio que esa estructura inicial no llegue a todo el mundo hasta que se empiezan a añadir archivos dentro de las mismas.
Para saltarse la limitación de Git de no gestionar carpetas vacías y poder solucionar el problema de compartir estructuras de carpetas iniciales, una convención que se suele utilizar por muchas personas es la de crear dentro de cualquier carpeta vacía un archivo vacío llamado .gitkeep
.
Estos archivos no ocupan nada, ya que están vacíos, por lo que no añaden apenas nada tampoco a la carga del remoto de Git ni a la transferencia de datos. Es como si no estuvieran. Pero como están Git los registra en el control de código y por tanto añade también la carpeta que los contiene.
Alguna gente añade con el mismo objetivo archivos .gitignore
vacíos en lugar de .gitkeep
. Personalmente no lo veo adecuado puesto que puede llevar a confusión y más de uno pensará que la idea es obviar esa carpeta. También hay quien crea un archivo simplemente con el nombre .keep
, pero no me parece tan buena idea puesto que no estamos indicando de forma tan clara como con .gitkeep
el hecho de que es un archivo que se refiere específicamente a Git. Los comento por si los llegas a ver en alguna ocasión.
Puede que a pesar de que el directorio no está vacío siga teniendo ese archivo en su interior. Eso es que en algún momento estuvo vacío y que nadie lo ha borrado. Es también bastante típico.
Así que cuando veas en algún proyecto uno o varios archivos .gitkeep
vacíos y te preguntes para qué demonios sirve, ahora ya sabes la respuesta 😊
¡Espero que te sea útil!
Fecha de publicación: