El archivo .gitignore es un documento de texto plano que indica a Git qué ficheros o carpetas debe ignorar por completo del control de versiones.
Cuando trabajamos con Git, a veces tendremos ficheros que no queremos guardar en absoluto. Por ejemplo, archivos temporales, carpetas de compilación, logs de errores o configuraciones locales de vuestro editor de código.
Subir todo esto al repositorio ensucia tu historial, ocupa espacio innecesariamente y, lo que es peor, puede suponer un fallo de seguridad enorme (por ejemplo, si subís claves privadas o contraseñas por accidente).
Para evitar estos dolores de cabeza, existe el fichero .gitignore, que contiene reglas. Si un archivo coincide con una regla Git lo ignorará por completo.
Es un archivo muy particular, ya que no tiene nombre, solo cuenta con la extensión.
Sintaxis de las reglas
Escribir reglas en este .gitignore es muy fácil. Cada línea es un patrón.
# Esto es un comentario
archivo_secreto.txt # Ignora este archivo específico
*.log # Ignora todos los archivos que terminen en .log
temp/ # Ignora la carpeta temp entera (y su contenido)
!importante.log # El signo '!' es una excepción: NO ignores este archivo
Los patrones más comunes que usarás son:
- *: Comodín para cualquier cadena de caracteres.
- /: Al final indica un directorio.
- !: Niega la regla anterior (útil para “ignorar todo menos esto”).
¿Qué deberías ignorar siempre?
Aunque depende de tu lenguaje de programación, hay cuatro categorías de archivos que casi nunca deberían entrar en Git:
Dependencias descargadas
Si programas en Node.js (node_modules), Python (venv) o PHP (vendor), esas carpetas pesan cientos de megas y se pueden regenerar con un comando (npm install). Nunca las subas.
Archivos compilados o binarios
Si usas C++, Java o C#, no subas los .exe, .o, .class o las carpetas bin/ y obj/. El código fuente es lo que importa; el binario se genera a partir de él.
Archivos del sistema o del IDE
Tu equipo no necesita saber que usas Mac (.DS_Store) o que tienes una configuración específica de VS Code (.vscode/). Eso es personal de tu máquina.
Credenciales y secretos 🛑
Archivos como .env, config.json con contraseñas o claves API. Si subes esto a un repositorio público, considera que has sido hackeado.
Git no es un lugar para guardar secretos. Incluso en repositorios privados, las claves no deben estar en el código. Usa variables de entorno.
El problema del “Ya es tarde”
Si un archivo ya está en la base de datos de Git (ya le hiciste commit), añadirlo al ignore no sirve de nada. Git seguirá vigilando sus cambios. Es decir,
Creas un archivo mi_texto.txt.
Haces git add y git commit.
Te das cuenta del error y lo añades al .gitignore.
Sigues trabajando.
¡Sorpresa! Git sigue rastreando mi_texto.txt.
El .gitignore solo funciona con archivos que son Untracked (que Git no conoce).
¿Cómo solucionarlo?
Tienes que decirle a Git que “olvide” el archivo, pero sin borrarlo de tu disco duro (porque lo necesitas para trabajar).
Usamos el comando rm con la opción --cached:
git rm --cached mi_texto.txt
- Esto borra el archivo del Staging Area (y del próximo commit), pero lo deja intacto en tu Working Directory.
- Ahora que ha vuelto a ser Untracked, Git leerá el
.gitignore, verá la regla y lo ignorará para siempre.
Si has subido por error un fichero privado, esto no te protege. Si has hecho push a un remoto cualquiera puede ver el fichero en la historia aunque lo borres.
