git rm

Instantáneas básicas

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>...
[ ] opcional| o<arg> valor a sustituir... repetible--flag opción

Opciones

Haz clic en una opción para desplegarla

Principiante (2)

Quita el archivo solo del área de preparación. El archivo sigue en el disco, sin seguimiento.

RecomendadoDejar de seguir un archivo (p. ej. confirmado por error) sin borrarlo

Ejemplo

git rm --cached .env

Elimina aunque el archivo tenga cambios sin confirmar. Esos cambios se pierden.

Cuando haga faltaElimina los cambios sin confirmar junto con el archivo — se pierden

Ejemplo

git rm -f app.js

Elegir la opción adecuada

Formas de quitar un archivo

Qué pasa en el disco y en Git

ComandoEn el discoEn el próximo commit
rm fileBorradoSigue ahí hasta que prepares la eliminación
git rm fileBorradoQuitado
git rm --cached fileConservadoQuitado (el archivo pasa a no tener seguimiento)

Ejemplos

Eliminar un archivo

git rm old.js

Elimina old.js y prepara la eliminación.


Dejar de seguir

git rm --cached .env

Git 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

1
git rm --cached .env

Dejar de seguirlo, conservarlo en el disco

2
echo ".env" >> .gitignore

Ignorarlo a partir de ahora

3
git add .gitignore

Preparar la regla de ignorar

4
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

A:

Prepara la eliminación con git rm <file> o git add <file> y luego haz commit.

A:

Antes del commit: git restore --staged --worktree <file>. Después: git restore --source=<commit> <file>.

A:

No. Los commits pasados lo conservan; solo el próximo commit lo deja fuera.