Siempre es una buena práctica el incluir un archivo .gitignore en nuestros repositorios git
Si mantenemos un repositorio de archivos bajo el control de versiones de git, un buena práctica es crear y configurar un archivo .gitignore adecuadamente para mantener el repositorio «limpio y ordenado».
Pero ¿Qué hace exactamente un archivo .gitignore y para qué sirve? (Vuelvo a recalcar y dejar claro que no soy experto en git… y creo que en nada en general 🙂 )
A grandes rasgos y simplificando muuucho, la herramienta git, lleva un histórico de las modificaciones realizadas en un conjunto de archivos, guardando información sobre qué y quien realizó las modificaciones.
¿Qué es un archivo .gitignore? Es un archivo de texto plano, donde especificamos aquellos archivos o carpetas que queremos que git no tenga en cuenta y no almacene las modificaciones que se han realizado sobre ellos durante el tiempo.
¿Y por qué queremos hacer eso? Porque puede ocurrir que durante nuestro manejo de esos archivos se creen archivos secundarios que se crean por herramientas externas, que no son relevantes y que su información es cambiante con el tiempo y no nos aporta nada.
Por ejemplo, quizás en nuestro repositorio debido a la herramienta que utilizamos, se generan archivos temporales, archivos logs, o similares que no nos sirven para nada y sobre los que no queremos tener control de versiones.
Al editar archivos de nuestro repositorio, quizás el editor que utilizamos genera archivos temporales de recuperación, quizás se generen bases de datos temporales, que tampoco queremos que git les siga el rastro.
Todos esos casos y muchos más se pueden especificar dentro del archivo .gitignore y así indicarle a git que se ahorre el trabajo de controlar esos archivos.
Como verás siempre he escrito .gitignore, con un punto delante del nombre, eso en GNU/Linux indica que es un archivo oculto. Para crear un archivo .gitignore simplemente escribiremos en una línea de comandos, dentro de la carpeta de nuestro repositorio git:
touch .gitignore
Y con nuestro editor de texto favorito, lo abrimos y lo editamos añadiendo los archivos, patrones de archivos o carpetas que queremos que git ignore. Entro otros símbolos podemos utilizar:
- Las líneas que empiezan con un símbolo # indican un comentario dentro del archivo.
- El símbolo \ sirve para «escapar» símbolos especiales en los nombres de archivos.
- El símbolo ! sirve para negar el patrón.
- El símbolo / sirve para indicar una carpeta de una ruta.
- El símbolo * sirve para reemplazar todo excepto una barra / y el símbolo ? solo reemplaza un caracter menos la barra /
En el archivo, podemos incluir un nombre específico de un archivo, como por ejemplo: Thumbs.db o podemos incluir un patrón, como por ejemplo: *.log Esto último incluye todos los archivos con extensión .log independientemente de su nombre.
Vale, ya sé qué es un archivo .gitignore y lo empezaré a utilizar, pero ¿cómo añado archivos a .gitignore en un repositorio ya bajo git con archivos que quiero que no los tenga en cuenta?
Quizás en tu repositorio ya tienes un archivo llamado registro.log que quieres empezar a dejar de controlarlo. Para ello lo incluiremos en .gitignore y después lo borraremos de manera efectiva en nuestro repositorio git.
Veamos cómo, escribiremos lo siguiente en nuestra línea de comandos:
echo registro.log >> .gitignoregit rm --cached registo.logrm registro.loggit add -a -m "eliminar archivo registro.log de git"
Ese archivo quedará eliminado del control de versiones del repositorio que realiza git, de ahora en adelante.
Hay herramientas muy útiles a la hora de crear archivos .gitignore efectivos dependiendo del repositorio con el que estemos trabajando, ya sea por el lenguaje de programación que contenga o por el sistema operativo que usemos, etc.
Tienes una herramienta en línea llamada .gitignore.io que generará archivos .gitignore en base a las etiquetas que introduzcas. Por ejemplo: Vim, C++, linux
Otra opción la tienes disponible en un repositorio de GitHub, donde hay múltiples archivos de muestra dependiendo del tipo de lenguaje con el que trabajemos en nuestro repositorio: C++, Qt, Python, Perl, etc…
Esto es una breve pincelada de lo que puedes hacer con .gitignore y de la forma en que te puede ayudar. ¡Pero hay mucho más para explorar! Echa un vistazo a estos…
Enlaces de interés
- https://git-scm.com/docs/gitignore
- https://docs.github.com/es/github/using-git/ignoring-files
- https://www.toptal.com/developers/gitignore
- https://github.com/github/gitignore
Muchas gracias, Víctor.
En el caso de que un repositorio git contenga los fuentes de una aplicación compilable, otro tipo de archivos a ignorar son los compilados (.o, .out,…) ya que de hecho se generan desde los ficheros fuente contenidos en las carpetas del repositorio.
Un ejemplo que aplica sería el kernel de linux.
Te suena «make clean» de haber compilado alguna vez? 😉 Éste, bien hecho, borra todo lo «superfluo» (logs, .o, .out,…), lo mismo que un .gitignore incluiría.
Saludos,
Josep
Gracias por compartir y comentar!
Saludos