git rm
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>...Options
Choisir la bonne option
Façons de supprimer un fichier
Ce qui se passe sur le disque et dans Git
| Commande | Sur le disque | Dans le prochain commit |
|---|---|---|
rm file | Supprimé | Toujours là tant que vous n’avez pas préparé la suppression |
git rm file | Supprimé | Retiré |
git rm --cached file | Conservé | Retiré (le fichier devient non suivi) |
Exemples
Supprimer un fichier
git rm old.jsSupprime old.js et prépare la suppression.
Arrêter le suivi
git rm --cached .envGit 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
git rm --cached .envArrêter de le suivre, le garder sur le disque
echo ".env" >> .gitignoreL’ignorer désormais
git add .gitignorePréparer la règle d’ignorance
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
Préparez la suppression avec git rm <file> ou git add <file>, puis committez.
Avant le commit : git restore --staged --worktree <file>. Après : git restore --source=<commit> <file>.
Non. Les commits passés le gardent ; seul le prochain commit l’abandonne.