Un archivo .gitignore le dice a Git qué archivos y carpetas dejar fuera del control de versiones. Mantiene fuera del repositorio la salida de compilación, las dependencias, los registros y los secretos.
Fundamentos de los patrones
Cada línea es un patrón. Las líneas en blanco se ignoran y las que empiezan por # son comentarios.
*.logignora todos los archivos que terminan en .log.build/ignora un directorio llamado build (la barra final significa solo directorio)./todo.txtignora todo.txt solo en la raíz del repositorio (una barra inicial ancla el patrón).docs/*.txtignora los archivos .txt directamente dentro de docs, pero no más profundo.**/tempcoincide con una carpeta temp a cualquier profundidad.?coincide con un carácter, y[abc]con un carácter de un conjunto.
Negación
Una línea que empieza por ! vuelve a incluir algo que un patrón anterior ignoró:
*.log
!important.log
No puedes reincluir un archivo si su directorio padre está excluido, ya que Git no mira dentro de las carpetas ignoradas.
Dónde vive el archivo
Un .gitignore se aplica a su directorio y a los inferiores. Puedes tener varios. Las reglas que solo afectan a tu equipo, como los archivos del editor, pueden ir en .git/info/exclude, y un archivo de ignorados global puede cubrir todos tus repositorios.
Entradas típicas
- Node:
node_modules/,dist/,.env,npm-debug.log*. - Python:
__pycache__/,*.pyc,.venv/,.env. - Editores y SO:
.vscode/,.idea/,.DS_Store,Thumbs.db. - Registros y cachés:
*.log,.cache/,coverage/.
Archivos que ya se rastrean
Ignorar no tiene efecto sobre los archivos que Git ya rastrea. Para dejar de rastrear un archivo pero conservarlo en disco, ejecuta git rm --cached <archivo> y haz commit. Es un cambio en el índice, así que hazlo de forma deliberada.
Depuración
git check-ignore -v <ruta> muestra qué regla ignora una ruta.
Preguntas frecuentes
¿Debe subirse el propio .gitignore? Sí, para que todo el equipo comparta las reglas.
¿Puedo ignorar todo excepto unos pocos archivos? Sí, empieza con * y añade negaciones, recordando la regla del directorio.

