Sinopsis
git rm [-f] [-r] [--cached] [--] <file>...
Descripción
El comando git rm elimina archivos del árbol de trabajo y del index en un solo paso, stageando la eliminación para el próximo commit. Usar git rm es más conveniente que eliminar el archivo con rm y luego ejecutar git add, aunque ambos enfoques producen el mismo estado final.
El flag --cached es particularmente útil: elimina el archivo del index sin borrarlo del árbol de trabajo. Esta es la herramienta correcta cuando accidentalmente commiteaste un archivo (como un archivo de configuración con secretos, o un artefacto de build) y quieres dejar de rastrearlo pero mantenerlo en disco.
En el uso diario, git rm se integra con alias de shell, plugins de editor e integración continua. Cuando algo sale mal, ejecuta el comando con GIT_TRACE=1 para revelar las llamadas plumbing subyacentes.
Entender cómo git rm interactúa con el resto del modelo de datos de Git ayuda a predecir resultados y a recuperarse de errores.
Opciones comunes
| Opción | Descripción |
|---|---|
-f, --force | Anula las verificaciones de seguridad si el archivo tiene cambios no commiteados. |
-r | Elimina directorios recursivamente. |
--cached | Elimina solo del index; deja el archivo del árbol de trabajo en paz. |
-n, --dry-run | Muestra lo que se eliminaría sin hacerlo. |
--ignore-unmatch | Sale con cero incluso si no coinciden archivos. |
-q, --quiet | Suprime la salida. |
Ejemplos
git rm old-file.txt
# Elimina el archivo y stagea la eliminación
git rm -r build/
# Elimina recursivamente un directorio del repo
git rm --cached secrets.env
# Deja de rastrear un archivo pero lo mantiene localmente
# ¡Luego añádelo a .gitignore!
git rm -n '*.log'
# Previsualiza qué archivos de log serían eliminados
Errores comunes
El mayor obstáculo es olvidar que git rm --cached solo detiene el rastreo futuro: los commits pasados aún contienen el archivo. Si necesitas purgar un secreto del historial, usa git filter-repo o BFG. Otro error es ejecutar git rm sobre un archivo con modificaciones no staged sin darte cuenta de que esos cambios se pierden. Usa -n primero si tienes dudas.
Comandos relacionados
git add, git mv, git restore, git filter-repo