PureTools

.gitignore: Qué Excluir de Tu Repositorio

PureTools Team· 8 min de lectura
.gitignore: Qué Excluir de Tu Repositorio

.gitignore: Mantén Tu Repositorio Limpio

Todo proyecto tiene archivos que no deberían estar en control de versiones: artefactos de build, dependencias, secretos, configs de editor, basura del SO. Un .gitignore bien escrito mantiene tu repo limpio y tus secretos seguros. Uno que falta filtra archivos .env a GitHub.

Sintaxis de Patrones

# Los comentarios empiezan con #

# Ignorar un archivo específico
.env
secrets.json

# Ignorar un directorio (barra al final)
node_modules/
dist/
build/

# Wildcard — coincide con cualquier carácter excepto /
*.log
*.tmp
*.swp

# Doble asterisco — coincide con cualquier profundidad de directorio
**/test-results/
src/**/*.test.js

# Negación — re-incluir algo
*.log
!important.log

# Interrogación — coincide con un solo carácter
temp?.txt    # temp1.txt, tempA.txt, pero no temp10.txt

.gitignore Esencial por Stack

Node.js / JavaScript:

node_modules/
dist/
build/
.next/
.nuxt/
.output/
coverage/
*.log
npm-debug.log*
.env
.env.local
.env.*.local

Python:

__pycache__/
*.py[cod]
*$py.class
*.so
.Python
venv/
env/
.venv/
*.egg-info/
dist/
build/
.eggs/
.pytest_cache/
.mypy_cache/
.env

Go:

# Binarios Go
*.exe
*.exe~
*.dll
*.so
*.dylib

# Binario de test
*.test

# Salida
*.out
vendor/
.env

Java:

*.class
*.jar
*.war
*.ear
target/
build/
.gradle/
.settings/
.classpath
.project
*.iml
.idea/

Archivos que NUNCA Debes Commitear

ArchivoPor Qué
.envContiene claves de API, contraseñas de base de datos, secretos
*.pem, *.keyClaves privadas y certificados
credentials.jsonClaves de service account (GCP, AWS)
*.sqlite, *.dbBases de datos locales con datos potencialmente sensibles
id_rsa, id_ed25519Claves privadas SSH
.npmrc con tokensTokens de autenticación de registry

¿Ya Commiteaste un Secreto?

Agregar un archivo al .gitignore no lo elimina del historial. Si commiteaste un secreto:

# 1. Eliminar el archivo del tracking (lo mantiene localmente)
git rm --cached .env

# 2. Agregar al .gitignore
echo '.env' >> .gitignore

# 3. Commitear la eliminación
git commit -m "Remove .env from tracking"

# 4. ROTA EL SECRETO — ya está en el historial de git
# Cualquier persona que clonó el repo lo tiene

Para eliminación completa del historial, usa git filter-branch o BFG Repo-Cleaner. Pero el enfoque más seguro es siempre rotar la credencial comprometida.

.gitignore Global

Para archivos específicos de tu SO y editor (no del proyecto), usa un gitignore global:

# Configurar gitignore global
git config --global core.excludesfile ~/.gitignore_global

# ~/.gitignore_global
.DS_Store
Thumbs.db
*.swp
*.swo
*~
.vscode/settings.json
.idea/
*.sublime-workspace

Esto mantiene los .gitignore del proyecto enfocados en patrones específicos del proyecto, no preferencias individuales de cada dev.

Depurando .gitignore

# Verificar por qué un archivo es ignorado
git check-ignore -v ruta/al/archivo
# .gitignore:3:*.log    ruta/al/archivo.log

# Listar todos los archivos ignorados
git status --ignored

# Forzar adición de archivo ignorado (no recomendado)
git add -f ruta/al/archivo-ignorado

Genera tu .gitignore: Generador de .gitignore — selecciona tu stack y obtén un archivo .gitignore completo instantáneamente.