git rm
Elimina archivos del directorio de trabajo y del área de preparación
El comando 'git rm' elimina un archivo con seguimiento y prepara la eliminación, así el próximo commit ya no lo contiene. Los commits anteriores conservan el archivo. Con --cached, Git deja de seguir el archivo pero lo mantiene en tu disco — la solución habitual para un archivo confirmado por error. git rm se niega a eliminar un archivo con cambios sin confirmar salvo que añadas -f.
Sinopsis
git rm [-f | --force] [-n] [-r] [--cached] [-q] [--] <pathspec>...Opciones
Elegir la opción adecuada
Formas de quitar un archivo
Qué pasa en el disco y en Git
| Comando | En el disco | En el próximo commit |
|---|---|---|
rm file | Borrado | Sigue ahí hasta que prepares la eliminación |
git rm file | Borrado | Quitado |
git rm --cached file | Conservado | Quitado (el archivo pasa a no tener seguimiento) |
Ejemplos
Eliminar un archivo
git rm old.jsElimina old.js y prepara la eliminación.
Dejar de seguir
git rm --cached .envGit olvida .env; el archivo sigue en el disco.
Eliminar una carpeta
git rm -r build/Elimina una carpeta y sus archivos con seguimiento.
Ejemplos de flujos de trabajo
git rm --cached .envDejar de seguirlo, conservarlo en el disco
echo ".env" >> .gitignoreIgnorarlo a partir de ahora
git add .gitignorePreparar la regla de ignorar
git commit -m "Stop tracking .env"Commit
Solución de problemas
error: the following file has local modifications
Causa: El archivo tiene cambios sin confirmar
Confírmalos o guárdalos con stash, usa --cached para conservar el archivo, o -f para descartarlos
fatal: not removing 'dir' recursively without -r
Causa: La ruta es una carpeta
Añade -r: git rm -r dir
Un secreto sigue en el historial
Causa: git rm solo afecta a los commits futuros
Cambia el secreto; reescribir el historial requiere una herramienta como git filter-repo
Consejos y trampas
Buenas prácticas
- ✓Usa git rm en lugar de rm + git add: un solo paso, nada olvidado.
- ✓Añade los archivos sin seguimiento a .gitignore justo después de git rm --cached.
- ✓Trata un secreto confirmado como filtrado: cámbialo, incluso después de quitar el archivo.
Errores comunes
- ✗Eliminar un archivo con rm a secas y olvidar preparar la eliminación.
- ✗Usar git rm cuando solo querías dejar de seguirlo: añade --cached para conservar el archivo.
- ✗Esperar que git rm borre un secreto del historial — los commits anteriores aún lo contienen.
Preguntas frecuentes
Prepara la eliminación con git rm <file> o git add <file> y luego haz commit.
Antes del commit: git restore --staged --worktree <file>. Después: git restore --source=<commit> <file>.
No. Los commits pasados lo conservan; solo el próximo commit lo deja fuera.