Menú de navegaciónMenú
Categorías

La mejor forma de Aprender Programación online y en español www.campusmvp.es

?id=779978b9-6937-4a51-833f-d055e8396a33

¿Qué son los archivos .gitkeep en Git?

Imagen ornamental

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:
José Manuel Alarcón Fundador de campusMVP, es ingeniero industrial y especialista en consultoría de empresa. Ha escrito diversos libros, habiendo publicado hasta la fecha cientos de artículos sobre informática e ingeniería en publicaciones especializadas. Microsoft lo ha reconocido como MVP (Most Valuable Professional) en desarrollo web desde el año 2004 hasta la actualidad. Puedes seguirlo en Twitter en @jm_alarcon o leer sus blog técnico o personal. Ver todos los posts de José Manuel Alarcón
Archivado en: Herramientas

Boletín campusMVP.es

Solo cosas útiles. Una vez al mes.

🚀 Únete a miles de desarrolladores

DATE DE ALTA

x No me interesa | x Ya soy suscriptor

La mejor formación online para desarrolladores como tú

Comentarios (1) -

Jesús Casañas
Jesús Casañas

Excelente definición, gracias

Responder

Agregar comentario

Los datos anteriores se utilizarán exclusivamente para permitirte hacer el comentario y, si lo seleccionas, notificarte de nuevos comentarios en este artículo, pero no se procesarán ni se utilizarán para ningún otro propósito. Lee nuestra política de privacidad.