Ignorar con .gitignore archivos que ya están confirmados
Explica cómo sacar del seguimiento con git rm --cached los archivos que siguen rastreándose aunque se añadan a .gitignore, cómo encontrar archivos rastreados que coinciden con las reglas y qué orden seguir si se confirmó información secreta.
Es la pregunta más frecuente. .gitignore solo se aplica a archivos que todavía no están rastreados. Un archivo que ya se confirmó alguna vez sigue mostrando cambios aunque se añada una regla. Para dejar de rastrearlo hay que sacar el archivo del índice (área de preparación).
Un archivo o una carpeta
# 1) Añadir la regla a .gitignore (ej.: .env, dist/)
# 2) Quitar solo del índice: el archivo real de la carpeta de trabajo se queda
git rm --cached .env
git rm -r --cached dist/
# 3) Commit
git commit -m "Stop tracking .env and dist"
La clave es --cached. Sin esta opción, git rm borra también el archivo de la carpeta de trabajo. Para directorios hace falta -r.
Encontrar archivos rastreados que coinciden con las reglas
Para ver qué queda afectado tras aplicar una plantilla nueva, usa el siguiente comando.
git ls-files -ci --exclude-standard
-c significa archivos rastreados, -i solo los que coinciden con las reglas de ignorar, y --exclude-standard aplica .gitignore, .git/info/exclude y la configuración global. Si la lista es correcta, puedes sacarlos del seguimiento de una vez.
# bash / zsh
git ls-files -ci --exclude-standard -z | xargs -0 git rm --cached --
# PowerShell
git -c core.quotePath=false ls-files -ci --exclude-standard | ForEach-Object { git rm --cached -- "$_" }
En la pestaña Dejar de rastrear del generador puedes crear estos comandos adaptados a tu shell.
Volver a aplicar todo
Si cambiaste mucho el .gitignore, también es habitual vaciar el índice y volver a añadir todo.
git rm -r --cached .
git add .
git commit -m "Apply .gitignore"
git add . vuelve a añadir aplicando las reglas de ignorar, así que los ignorados quedan fuera. Pero antes del commit revisa sin falta la lista de borrados con git status. En repositorios donde cambió la configuración de fin de línea (core.autocrlf), muchos archivos pueden aparecer como modificados.
Efecto sobre otras personas
Si haces push de un commit que deja de rastrear archivos, esos archivos se borran de la carpeta de trabajo de quien haga pull de ese commit. Para git, el archivo se ha eliminado del repositorio. Si son archivos que cada uno necesita, como .env o la configuración del IDE, avisa antes para que hagan copia de seguridad.
Si ya se hizo push de información secreta
Dejar de rastrear solo afecta a los commits futuros. En los commits pasados el archivo sigue ahí y cualquiera puede sacarlo del historial. El orden es el siguiente.
- Revoca primero las claves y contraseñas expuestas y emite otras nuevas. Esto es lo más importante.
- Saca el archivo del seguimiento y añádelo a .gitignore.
- Si hace falta, borra el archivo del historial con una herramienta como git filter-repo y haz push forzado. No se pueden borrar las copias ya clonadas o bifurcadas, así que esto no sustituye al paso 1.
assume-unchanged y skip-worktree no son funciones de ignorar
git update-index --assume-unchanged y --skip-worktree ocultan temporalmente los cambios de un archivo rastreado, pero el archivo sigue rastreándose.
--assume-unchangedes una indicación de rendimiento. Es una promesa de que git no necesita comprobar los cambios del archivo, y git puede ignorar esta marca cuando lo necesite.--skip-worktreees una marca para que git no toque el archivo de la carpeta de trabajo, y se usa en el checkout disperso (sparse checkout).
La documentación de git también indica no usar estas opciones con el fin de ignorar cambios en archivos rastreados. Para archivos de configuración compartidos, lo seguro es confirmar config.example.json e ignorar el config.json real.
Referencias
- Documentación oficial de git-rm
- Documentación oficial de git-ls-files
- Documentación oficial de git-update-index: NOTES
- GitHub Docs: Ignoring files
- Fecha de verificación: 2026-09-23 (comandos comprobados con git 2.50.1)