Gitignore en git

De ChuWiki


¿Qué es gitignore?[editar]

.gitignore es un fichero de texto en el que indicamos qué ficheros debe ignorar git. Cada línea del fichero indica un fichero a ignorar. Podemos usar comodines. Por ejemplo

*.class
*.jar
target
build

Esto hará que git ignore los fichero *.class y *.jar así como los directorios target y build (o ficheros con esos nombres).

Podemos usar path absolutos o relativos, por ejemplo

/target
target/classes

El primero ignorará sólo el directorio target en el raíz de nuestro proyecto git. El segundo ignorará cualquier subdirectorio classes que esté dentro de un subdirectorio target.

Podemos también excluir algún fichero concreto de .gitignore poniendo delante !. Por ejemplo

*.txt
!importante.txt

ingorará todos los ficheros *.txt excepto el fichero importante.txt

gitingore folder y subfolder[editar]

Podemos colocar el fichero .gitignore en cualquier parte de nuestro proyecto. Afectará al subdirectorio donde lo hemos colocado y todos sus subdirectorios. Podemos poner fiheros .gitignore en varios directorios a la vez. Se hará caso a todos los que apliquen, ignorando todos los ficheros que estén en todos ellos.

Por ejemplo, si en el raíz ponemos un fichero .gitignore que ignore los ficheros .exe y en un subdirectorio ponemos otro fichero .gitignore que ignore los fichero .lib, entonces en ese subdirectorio se ignorarán tanto los .exe como los .lib

Añadir fichero ya añadido en git a gitignore[editar]

A veces se nos cuela por error un fichero en git y queremos añadirlo a .gitignore después. Para ello, primero debemos indicarle a git que deje de hacer seguimiento de ese fichero

git rm --cached path/fichero

una vez hecho esto, podemos añadirlo a .gitignore. Esto no lo borrará de nuestro directorio, debemos borrarlo nosotros a mano si es lo que nos interesa. A otros usuario sí se les borrará cuando hagan un git pull.

¿Qué ficheros añadir a .gitignore?[editar]

Normalmente no queremos añadir a git ficheros del siguiente estilo

  • Lo que genera nuestro compilador. En el caso de java, por ejemplo, los ficheros .class o los ficheros .jar.
  • Lo que genera nuestro entorno de compilación. Si usamos maven, por ejemplo, no querremos incluir en git el directorio target completo
  • Los ficheros específicos de nuestro IDE. No suele ser buena idea incluirlos puesto que puede interferir con cómo tengan el IDE configurado otros desarrolladores del mismo proyecto. Por ejemplo, en el caso de IntelliJ suele ser buena idea excluir ficheros .run, .idea o .iws
  • En general, cualquier binario grande. Los ficheros grandes suelen hacer más lento el hacer un clone/checkout del proyecto. Sobre todo si esos binarios cambian y vamos actualizando versiones, ya que git guarda todas y copia todas cuando un desarrollador hace un clone/checkout.

Deberíamos limitarnos a meter sólo ficheros que realmente queramos compartir. El fichero .gitignore también suele meterse en git de forma que todos los desarrolladores lo compartan.

gitignore generator[editar]

En internet hay ficheros .gitignore para varios tipos de proyecto, como por ejemplo, github/gitinore

Y también hay generadores online en los que tú indicas tu tipo de proyecto poniendo etiquetas, por ejemplo, "java", "intellij" y "gradle" y ellos te generan el fichero .gitignore. Por ejemplo gitignore.io