Git ignore | Curso de Git (clase 7)

45

En la anterior clase sobre Comandos básicos de Git, revisamos algunos de los comandos fundamentales para interactuar con un repositorio desde la terminal. En esta clase revisaremos la utilidad del archivo .gitignore en un proyecto.

Fundamentos

De acuerdo a la documentación oficial de Git, en el archivo de gitignore se especifican todos aquellos archivos o carpetas que no se deben agregar al índice de Git, intencionalmente. De tal forma que a pesar de que aun cuando se ejecute el comando git add –all, estos archivos o carpetas serán omitidos.

Gitignore, básicamente es un archivo en la carpeta raíz de nuestro repositorio en el que se definen nombres de carpetas y archivos o patrones para la identificación de los mismos, para evitar que estos sean añadidos al índice de Git.

Procedimiento

Actualmente no hay comandos de Git para, a partir de ellos, crear o editar este archivo, por lo que el procedimiento es crear y editar el archivo .gitignore, directamente.

Creando el archivo

Es importante saber que cuando se inicia un nuevo repositorio desde la terminal con el comando git init, no se crea de forma automática el archivo de gitignore, por lo que debemos crearlo desde nuestro sistema de archivos o desde la terminal con el siguiente comando (estando en la carpeta raíz de nuestro proyecto):

Editando el archivo

Para editar el archivo git ignore, podemos utilizar cualquier editor de texto (en la terminal o con interfaz gráfica) que deseemos. Para agregar un archivo a directorio, basta con escribir el nombre del mismo a partir de la ruta de la carpeta raíz del proyecto, Git acepta patrones para hacer estas descripciones en orden de incluir varios archivos o carpetas con pocas líneas.

La tabla a continuación, con base en Attlassian,se muestra los patrones que se puede ocupar y la forma en la que se traduciría para Git, en orden de entenderlos con mayor detalle.

Patrón Ejemplo Explicación
**/logs logs/debug.log Se utiliza el doble asterisco para excluir a todos los directorios con el nombre a continuación, sin importar su directorio padre.
logs/monday/foo.bar
build/logs/debug.log
**/logs/debug.log logs/debug.log Se utiliza el doble asterisco para hacer referencia a archivos de acuerdo a su nombre y/o a su directorio padre.
build/logs/debug.log
pero no
logs/build/debug.log
*.log debug.log El asterisco es un comodín que se entiende como todo lo que coincida con la terminación o nombre del archivo, sin importar los caracteres anteriores.
foo.log
.log
logs/debug.log
*.log   

!important.log

debug.log La negación permite que un archivo sea incluido en el índice de Git a pesar de que coincida con una regla anterior.
trace.log
pero no
important.log
logs/important.log
*.log  !important/*.log  trace.* debug.log Los patrones definidos después de una negación incluirán nuevamente los archivos y directorios que se habían previamente excluido.
important/trace.log
pero no
important/debug.log
/debug.log debug.log La diagonal hace referencia a la carpeta raíz del proyecto.
pero no
logs/debug.log
debug.log debug.log Al definir el nombre de un archivo, será excluido sin importar su ubicación en el proyecto.
logs/debug.log
debug?.log debug0.log Una interrogación funciona como el asterisco pero únicamente para un solo carácter.
debugg.log
pero no
debug10.log
debug[0-9].log debug0.log Los paréntesis cuadrados hacen referencia a un solo carácterdentro de un rango definido.
debug1.log
pero no
debug10.log
debug[01].log debug0.log Los paréntesis cuadrados también hacen referencia a un solo carácterde un conjunto dado.
debug1.log
pero no
debug2.log
debug01.log
debug[!01].log debug2.log Un signo de negación dentro de paréntesis cuadrados omitirá los archivos que coincidan con el patrón definido.
pero no
debug0.log
debug1.log
debug01.log
debug[a-z].log debuga.log Los paréntesis cuadrados permiten rangos de carácteres alfanuméricos.
debugb.log
pero no
debug1.log
logs logs Si no se incluyen asteriscos o diagonales, Git tomará todas las carpetas que coincidan con el nombre definido.
logs/debug.log
logs/latest/foo.bar
build/logs
build/logs/debug.log
logs/ logs/debug.log Al poner una diagonal después de un nombre de carpeta, Git incluirá todo lo que esté debajo de una carpeta que coincida con dicho nombre.
logs/latest/foo.bar
build/logs/foo.bar
build/logs/latest/debug.log
logs/ !logs/important.log logs/debug.log Git no tomará en cuenta la regla definida con la negación, ya que no se pueden omitir archivos o carpetas con reglas debajo de un directorio.
logs/important.log
logs/**/debug.log logs/debug.log Un doble asterisco entre una ruta, hace referencia a 1 o más carpetas.
logs/monday/debug.log
logs/monday/pm/debug.log
logs/*day/debug.log logs/monday/debug.log Los asteriscos, también se pueden usar como comodines en los nombres de las carpetas.
logs/tuesday/debug.log
but not
logs/latest/debug.log
logs/debug.log logs/debug.log Si se hace referencia a un archivo en particular, sin asteriscos en la ruta, Git tomará las coincidencias partiendo de la carpeta raíz.
pero no
debug.log
build/logs/debug.log

Fuente: https://www.atlassian.com/git/tutorials/gitignore

Es conveniente agregar comentarios a nuestro archivo de git ignore para hacer más fácil su mantenimiento y la búsqueda dentro de él. Para agregar comentarios a este archivo basta con agregar el caractér # al principio de la línea del comentario.

Aplicando los cambios

Una vez que nuestro archivo .gitignore, está definido y guardado, debemos ejecutar nuevamente los comandos de add y commit para que estos hagan efecto.

Cabe mencionar que los archivos ya añadidos al índice antes del archivo git ignore, no serán removidos.

Quitando archivos del índice

Como se menciona en el punto anterior, los archivos añadidos al índice de Git antes de guardar el archivo de git ignore, no serán removidos después de guardarlo. Para removerlos del índice basta con borrarlos del sistema de archivos o bien (mejor práctica), quitarlos del cache de git con el siguiente comando:

Recursos

Para encontrar archivos .gitignore ya definidos dirígete al siguiente repositorio de Git, en donde encontrarás este archivo para una gran cantidad de diferentes lenguajes de programación, mismos que únicamente deberás incluir en la carpeta raíz de tu proyecto.

https://github.com/github/gitignore

Un archivo git ignore para el lenguaje Java, por ejemplo, se vería así:


En la siguiente clase, revisaremos como trabajar con ramas de Git de forma más detallada.

Comments

comments