git rm

Instantanés de base

Supprimer des fichiers du répertoire de travail et de la zone de préparation


La commande 'git rm' supprime un fichier suivi et prépare la suppression, pour que le prochain commit ne le contienne plus. Les anciens commits gardent le fichier. Avec --cached, Git arrête de suivre le fichier mais le laisse sur votre disque — la correction habituelle pour un fichier committé par erreur. git rm refuse de supprimer un fichier avec des modifications non committées, sauf si vous ajoutez -f.

Synopsis

git rm [-f | --force] [-n] [-r] [--cached] [-q] [--] <pathspec>...
[ ] facultatif| ou<arg> valeur à remplacer... répétable--flag option

Options

Cliquez sur une option pour la déplier

Débutant (2)

Retirer le fichier de la zone de préparation seulement. Le fichier reste sur le disque, non suivi.

RecommandéArrêter de suivre un fichier (p. ex. committé par erreur) sans le supprimer

Exemple

git rm --cached .env

Supprimer même si le fichier a des modifications non committées. Ces modifications sont perdues.

Si nécessaireSupprime les modifications non committées avec le fichier — elles sont perdues

Exemple

git rm -f app.js

Choisir la bonne option

Façons de supprimer un fichier

Ce qui se passe sur le disque et dans Git

CommandeSur le disqueDans le prochain commit
rm fileSuppriméToujours là tant que vous n’avez pas préparé la suppression
git rm fileSuppriméRetiré
git rm --cached fileConservéRetiré (le fichier devient non suivi)

Exemples

Supprimer un fichier

git rm old.js

Supprime old.js et prépare la suppression.


Arrêter le suivi

git rm --cached .env

Git oublie .env ; le fichier reste sur le disque.


Supprimer un dossier

git rm -r build/

Supprime un dossier et ses fichiers suivis.

Exemples de workflows

1
git rm --cached .env

Arrêter de le suivre, le garder sur le disque

2
echo ".env" >> .gitignore

L’ignorer désormais

3
git add .gitignore

Préparer la règle d’ignorance

4
git commit -m "Stop tracking .env"

Commit

Dépannage

error: the following file has local modifications

Cause : Le fichier a des modifications non committées

Committez-les ou mettez-les de côté (stash), utilisez --cached pour garder le fichier, ou -f pour les jeter

fatal: not removing 'dir' recursively without -r

Cause : Le chemin est un dossier

Ajoutez -r : git rm -r dir

Un secret est toujours dans l’historique

Cause : git rm n’affecte que les commits futurs

Changez le secret ; réécrire l’historique demande un outil comme git filter-repo

Astuces et pièges

Bonnes pratiques

  • ✓Utilisez git rm plutôt que rm + git add : une seule étape, rien d’oublié.
  • ✓Ajoutez les fichiers non suivis à .gitignore juste après git rm --cached.
  • ✓Considérez un secret committé comme divulgué : changez-le, même après avoir supprimé le fichier.

Erreurs fréquentes

  • ✗Supprimer un fichier avec un simple rm et oublier de préparer la suppression.
  • ✗Utiliser git rm alors que vous vouliez seulement arrêter le suivi : ajoutez --cached pour garder le fichier.
  • ✗S’attendre à ce que git rm efface un secret de l’historique — les anciens commits le contiennent toujours.

FAQ

A:

Préparez la suppression avec git rm <file> ou git add <file>, puis committez.

A:

Avant le commit : git restore --staged --worktree <file>. Après : git restore --source=<commit> <file>.

A:

Non. Les commits passés le gardent ; seul le prochain commit l’abandonne.