Ignorando archivos y carpetas

En git es posible ignorar archivos o carpetas que no queremos incluir en el sistema de control de versiones, ya sea porque tienen información sensible o son autogeneradas por alguna herramienta: logs, archivos temporales, etc.

El archivo donde se define la lista de archivos y carpetas a ignorar se llama .gitignore. Como este archivo inicia con punto (.), en la mayoría de sistemas operativos aparecerá como un archivo oculto.

Los archivos y carpetas definidos en .gitignore no van a aparecer como archivos nuevos o modificados al ejecutar git status.

Si aún no existe el archivo .gitignore podemos crearlo con nuestro editor de texto favorito e incluirlo en el siguiente commit.

En el archivo .gitignore escribimos los nombres de los archivo o carpetas que queremos ignorar (uno por línea). También podemos tener comentarios (utilizando numeral #). Por ejemplo:

# esto es un comentario
development.log
build

En este caso estamos ignorando un archivo llamado development.log (que esté en cualquier carpeta) y la carpeta build (incluyendo todos los archivos que estén dentro de la carpeta).

Si queremos ignorar un archivo o carpeta que esté en la raíz del proyecto (no en una subcarpeta), utilizaríamos un / antes del archivo o la carpeta. Por ejemplo, para ignorar el archivo development.log que se encuentra en la raíz utilizaríamos la siguiente línea:

/development.log

También puedes utilizar patrones en el archivo .gitignore:

# ignorar todos los archivos que terminen en .log
*.log
# excepto production.log
!production.log
# ignorar los archivos terminados en .txt dentro de la carpeta doc (pero no sus subdirectorios)
doc/*.txt
# ignorar todos los archivos terminados en .pdf dentro de la carpeta doc y sus subdirectorios
doc/**/*.pdf

En este enlace vas a encontrar algunas plantillas del archivo .gitignore que Github ha creado para algunos lenguajes de programación y frameworks populares. Puede ser un buen punto de partida para tu proyecto o también una buena forma de ver ejemplos de este archivo.