Comment supprimer des fichiers d’un dépôt Git sans casser votre projet
Apprenez à supprimer des fichiers dans un dépôt Git, à éviter les erreurs courantes et à garder un dépôt propre, même dans des scénarios complexes ou sensibles.
Supprimer des fichiers avec Git n’est pas toujours aussi simple qu’il y paraît. Vous supprimez un fichier sur votre système, mais cela ne signifie pas qu’il a disparu du dépôt. Il peut encore exister dans l’historique, ou pire, être ajouté par erreur au prochain commit, comme un fichier de configuration ou une clé API.
Dans ce guide, vous allez apprendre à retirer des fichiers de Git. Nous commencerons par les commandes de base comme git rm, puis nous verrons des méthodes plus avancées, comme le nettoyage des fichiers non suivis et l’édition de l’historique des commits.
Prérequis
Avant de supprimer des fichiers avec Git, vérifions que tout est en place.
D’abord, vérifiez si Git est installé. Ouvrez votre terminal et exécutez :
Si vous voyez un numéro de version, vous êtes prêt.
Si vous voyez un numéro de version, vous êtes prêt.
Vous pouvez aussi installer une interface graphique Git comme GitHub Desktop, Sourcetree ou GitKraken si vous préférez un mode visuel. Mais dans ce guide, j’utiliserai la ligne de commande (Git Bash).
Assurez-vous d’avoir les droits pour modifier le dépôt, surtout si vous travaillez en équipe ou avec un dépôt distant comme GitHub ou GitLab.
Note : certaines suppressions sont irréversibles. Il est donc conseillé de sauvegarder votre projet ou au minimum de vérifier l’état de votre dépôt avant d’exécuter des commandes qui suppriment des fichiers.
Une fois cela fait, allons-y.
Suppression de fichiers basique avec Git
Il existe plusieurs façons de supprimer des fichiers dans Git, selon votre objectif. Voici les options les plus courantes :
Utiliser git rm
La commande git rm supprime des fichiers de votre dépôt Git. Quand vous l’exécutez, il se passe deux choses :
Git retire le fichier de votre répertoire de travail
Il prépare cette suppression pour le prochain commit
Mais Git ne se contente pas de supprimer le fichier. Il enregistre la suppression dans l’historique. Une fois que vous validez (commit), le fichier est officiellement retiré du projet.
Cela supprime tous les fichiers à l’intérieur du dossier temp sans supprimer le dossier.
Git ajoute aussi des garde-fous. Si un fichier contient des modifications non validées, Git ne le supprimera pas sauf si vous forcez. À utiliser seulement si vous êtes certain de pouvoir jeter ces changements :
(Ici, * signifie « tout ». Il correspond à tout nom de fichier qui se termine par .txt.)
2. --cached
Cette option supprime le fichier du dépôt mais le conserve sur votre ordinateur. Disons que j’ai ajouté par erreur un fichier sensible comme config.env. Je ne veux pas qu’il soit dans le dépôt, mais j’en ai besoin localement. J’exécuterais donc :
Ici, git rm le supprimerait du dépôt et du répertoire de travail. Et --cached arrête son suivi par Git (il ne sera pas poussé), tout en le laissant physiquement en place.
Pour éviter qu’il ne soit réajouté, ajoutez-le à .gitignore :
Signifie récursif. Au lieu d’un fichier, supprime le dossier et son contenu de manière récursive. Sans cela, Git renverra une erreur si vous tentez de supprimer un dossier.
Si vous utilisez git rm, tout est géré en une seule étape. Le fichier est supprimé et la modification est immédiatement indexée :
git rm file.txtgit commit -m "Remove file.txt"Propulsé par
Inutile d’exécuter git add séparément. C’est plus propre et vous n’oublierez pas d’indexer la suppression.
En bref :
La suppression manuelle nécessite des étapes supplémentaires pour que Git prenne en compte le changement.
Si vous oubliez d’indexer la suppression, Git pensera que le fichier existe toujours, ce qui peut provoquer de la confusion dans les commits ou les fusions.
git rm est plus propre et plus sûr quand vous supprimez intentionnellement des fichiers suivis.
Restaurer des fichiers supprimés dans Git
Et si vous supprimez un fichier puis réalisez ensuite qu’il vous est encore utile ? Pas de souci. Git propose plusieurs façons de le récupérer selon le moment où vous détectez l’erreur.
Si vous n’avez pas encore validé (commit) :
Disons que vous avez supprimé le fichier sans encore valider la modification. Vous pouvez le restaurer depuis le dernier commit comme ceci :
Parcourez le journal et copiez le hash du commit où le fichier était présent. Puis exécutez :
git checkout <commit hash> -- file.txtPropulsé par
Dans les anciennes versions de Git, vous pouviez utiliser la commande ci-dessus. Elle restaure un fichier depuis un commit précis, mais pouvait aussi changer de branche.
Depuis Git 2.23, cela a été séparé en deux commandes plus claires :
git switch (pour changer de branche)
git restore (pour restaurer des fichiers)
Si vous souhaitez uniquement restaurer un fichier depuis un commit, utilisez :
git restore --source=<commit-hash> --file.txtPropulsé par
Cela récupère le fichier depuis ce commit et le remet dans votre répertoire de travail.
Si vous ne savez pas quand le fichier a été supprimé :
Peut-être avez-vous fait de nombreux changements et ne vous souvenez plus à quel moment le fichier a disparu. Dans ce cas, utilisez git reflog ou journal des références :
Cela affiche l’historique complet de vos commits, checkouts, resets, etc.
Mais git reflog est local uniquement et ne fonctionne pas sur les dépôts distants. Si vous travaillez avec un dépôt distant, il vaut mieux utiliser git log -- file.txt pour suivre l’historique de ce fichier.
Une fois le point identifié, restaurez le fichier avec git checkout ou git restore comme précédemment.
Corriger les fichiers manquants dans Git
Parfois, des fichiers sont supprimés directement du système — via l’explorateur, une commande rm en terminal, ou par accident. Dans ce cas, Git ne nettoie pas automatiquement. Il marque ces fichiers comme manquants et attend que vous gériez correctement la suppression.
Voyons comment traiter cette situation, étape par étape.
Remplacez <branch-name> par la branche de travail, comme main ou dev.
Étape 4 : alternative
Disons que vous avez supprimé manuellement un lot de fichiers, par accident ou lors d’un ménage. Git pense toujours que ces fichiers existent jusqu’à ce que vous l’informiez du contraire.
Si vous ne souhaitez pas tous les retirer un par un avec git rm, il existe un moyen plus rapide de nettoyer.
Exécutez cette commande dans votre terminal :
git ls-files --deleted -z | xargs -0 git rmPropulsé par
Voici ce qu’elle fait :
git ls-files --deleted liste tous les fichiers suivis par Git qui manquent désormais sur le disque.
xargs -0 git rm transmet ces noms de fichiers à git rm et les supprime de l’index de Git.
Très utile sur un gros projet pour accélérer le nettoyage.
Note : j’ai obtenu ce message car aucun fichier suivi n’est actuellement manquant sur votre disque.
Suppression avancée de fichiers avec Git
Maintenant que nous avons vu les bases, passons à des situations plus avancées où retirer un fichier de Git ne se résume pas à exécuter git rm. Ce sont des cas où des données sensibles sont en jeu ou où il faut nettoyer prudemment des fichiers non suivis.
Retirer des données sensibles de Git
Il arrive qu’un fichier contenant des données privées, comme des clés API ou des mots de passe, soit commité par erreur. Le supprimer « normalement » ne suffit pas. Comme Git conserve l’historique complet, le fichier existe encore dans les commits antérieurs.
Pour l’effacer totalement, utilisez la commande git filter-repo : git filter-repo (recommandé)
C’est une alternative plus récente et meilleure que filter-branch. Plus rapide, plus sûre et plus simple.
Commencez par l’installer (vous aurez besoin de Python et pip) :
Prévenez ensuite vos collègues. Ils devront re-cloner ou réinitialiser leurs copies locales pour éviter les erreurs.
Nettoyer les fichiers non suivis avec git clean
Faisons le point :
Les fichiers suivis figurent dans l’historique de Git. Pour les retirer, utilisez git rm, puis validez.
Les fichiers non suivis ne sont pas dans Git. Ils peuvent s’accumuler et encombrer votre projet.
Pour supprimer des fichiers ou dossiers non suivis, utilisez git clean.
Voici les options les plus utiles :
git clean -n # Affiche les fichiers non suivis qui seraient supprimésgit clean -nd # Affiche les dossiers non suivis qui seraient supprimésgit clean -fd # Supprime tous les fichiers et dossiers non suivis. Destructif.Propulsé par
Ici :
-n signifie aperçu uniquement.
-f force la suppression.
-d inclut les dossiers dans le nettoyage.
Note : git clean n’affecte pas les fichiers suivis. Mais il supprimera tout ce qui n’est pas suivi, y compris des fichiers que vous souhaitiez garder. Utilisez donc toujours -n d’abord pour prévisualiser.
Suppression de fichiers dans GitHub et outils GUI
La plupart de ce que nous avons vu se fait en ligne de commande. Mais tout le monde ne travaille pas ainsi, et c’est très bien. Certain·e·s développeurs utilisent des outils visuels ou travaillent directement dans GitHub.
Voyons comment la suppression fonctionne dans l’interface web de GitHub et dans d’autres outils GUI, et comment cela se compare à la ligne de commande.
Supprimer des fichiers sur le site GitHub
Si vous travaillez dans l’interface navigateur de GitHub, vous pouvez supprimer des fichiers sans terminal.
Voici comment cela fonctionne dans l’interface 2025 :
Ouvrez le fichier à supprimer.
Cliquez sur les trois points en haut à droite.
Choisissez Delete file dans le menu déroulant.
GitHub affiche alors une zone de message de commit. Ajoutez un court message, par exemple :
Vous pouvez aussi écrire une description optionnelle.
Ensuite, choisissez comment enregistrer la modification :
Valider directement sur la branche main
Ou créer une nouvelle branche et ouvrir une pull request (recommandé en équipe)
Cliquez sur Commit changes, et GitHub supprimera le fichier et enregistrera la suppression dans un commit, comme le fait git rm en ligne de commande.
Supprimer des fichiers avec des outils Git GUI
Si vous utilisez une interface Git comme GitHub Desktop, Sourcetree ou Tower, le processus est également simple :
Supprimez le fichier dans votre explorateur ou depuis l’application.
L’application affiche la suppression sous « Changes » ou « File Status ».
Vérifiez, indexez et validez la modification.
Chaque outil a son look, mais le workflow est similaire : vous suivez les changements visuellement et vous validez quand vous êtes prêt.
Bonnes pratiques par plateforme
Aperçu rapide du fonctionnement de la suppression selon les plateformes, et quand les utiliser :
GitHub (Web) : idéal pour des corrections rapides et petites mises à jour. À éviter pour des grands nettoyages ou des fichiers sensibles.
Outils Git GUI : parfaits au quotidien. Vision claire des changements et commits sécurisés.
Ligne de commande : la plus flexible et la plus utile. Idéale pour les tâches avancées, les modifications en masse ou les réécritures d’historique.
Bonnes pratiques pour la suppression de fichiers avec Git
Supprimer des fichiers avec Git semble simple, mais une erreur peut casser votre code. Voici des conseils pratiques que j’applique pour sécuriser les suppressions, surtout sur des projets partagés ou de long terme.
Toujours vérifier avant de supprimer
Avant de supprimer, prenez une minute pour confirmer ce que fait le fichier :
Exécutez git status pour voir s’il est indexé ou modifié.
Utilisez git log -- <filename> pour consulter son historique de commits.
Ce rapide contrôle m’évite des heures de récupération plus tard.
Faire des commits atomiques
Un commit atomique correspond à une unité logique de changement par commit.
Par exemple, si je supprime des fichiers inutilisés, je ne commite que ces suppressions, séparément de mes modifications de code.
Pourquoi c’est utile :
Le débogage est plus simple. Des outils comme git bisect fonctionnent mieux avec des commits petits et ciblés.
L’historique reste clair et lisible.
Les revues de code vont plus vite.
Collaborer prudemment lors d’une réécriture d’historique
Réécrire l’historique avec des outils comme git filter-repo impacte toute l’équipe. Pour éviter le chaos :
Communiquez avant de réécrire des branches partagées.
Utilisez git push --force avec précaution, car cela réécrit l’historique distant.
Demandez aux collègues de re-cloner ou de réinitialiser leurs dépôts locaux ensuite.
Utiliser --dry-run avant toute commande destructive
Avant d’exécuter une commande qui supprime des fichiers, testez-la :
Le fichier doit maintenant apparaître comme « modified » et non plus « staged ».
Conserver des dossiers vides dans le dépôt
Par défaut, Git ignore les dossiers vides. Si je tente de valider un dossier sans fichier, Git l’ignore.
Mais il m’arrive de vouloir garder ce dossier pour de futurs journaux ou imports. L’astuce consiste à ajouter un fichier « placeholder » appelé .gitkeep.
Voici comment faire :
touch logs/.gitkeepgit add logs/.gitkeepgit commit -m "Keep logs folder in the repo"Propulsé par
Cela rend le dossier « non vide » et Git le suit.
Note : .gitkeep n’est pas une fonctionnalité Git. C’est une convention. Vous pouvez nommer le fichier comme vous voulez, mais .gitkeep indique clairement son utilité.
Dépannage de la suppression de fichiers Git
Voici quelques problèmes courants rencontrés lors de suppressions dans Git, et comment les résoudre.
Le fichier apparaît encore sur le dépôt distant
Vous avez supprimé le fichier, validé la modification, mais il est toujours sur le dépôt distant. Peut-être avez-vous oublié de pousser.
Cela remet tous les fichiers dans l’état du dernier commit.
Dernières réflexions
Quand vous supprimez des fichiers avec Git, l’erreur est vite arrivée si vous n’êtes pas attentif. Un petit faux pas peut entraîner de gros problèmes : code cassé, travail perdu, incompréhensions dans l’équipe. D’où l’intérêt de prendre quelques secondes pour vérifier ce que vous faites.
Utilisez la bonne commande pour la situation. Si vous n’êtes pas sûr de l’effet d’une action, testez d’abord en dry run. Et si vous travaillez à plusieurs, assurez-vous que tout le monde est aligné.
Avancez étape par étape. C’est ainsi qu’on progresse.
Git : questions fréquentes sur la suppression de fichiers
Que signifie « stager la suppression » ?⌄
L’indexation (staging) consiste à préparer des changements pour votre prochain commit. Quand vous exécutez git rm filename, Git supprime le fichier de votre dossier et prépare cette suppression à être enregistrée dans le prochain commit. C’est ce qu’on appelle « stager la suppression ». La modification n’est pas définitive tant que vous n’exécutez pas git commit.
Quelle est la différence entre git rm et rm ?⌄
rm supprime uniquement un fichier de votre dossier local. Git ne suivra pas ce changement tant que vous ne le préciserez pas.
git rm supprime le fichier et indexe la suppression pour votre prochain commit, afin que Git le retire aussi du dépôt.
Quand utiliser git push origin vs git push ?⌄
Voici quand utiliser chaque commande :
Utilisez git push si votre branche est déjà reliée à un remote.
Utilisez git push origin quand vous voulez préciser explicitement le remote, par exemple lors du push d’une nouvelle branche ou si vous avez plusieurs remotes.
À quoi sert git pull ?⌄
git pull met à jour votre branche locale avec les derniers changements du dépôt distant. Il récupère (fetch) les nouveaux commits du remote puis les fusionne dans votre branche courante.
Je suis un stratège du contenu qui aime simplifier les sujets complexes. J'ai aidé des entreprises comme Splunk, Hackernoon et Tiiny Host à créer un contenu attrayant et informatif pour leur public.
Apprenez l'essentiel de l'architecture d'un entrepôt de données, des composants clés aux meilleures pratiques, pour construire un système de données évolutif et efficace !
Comprenez comment supprimer des éléments d'une liste en Python. Veuillez vous familiariser avec les méthodes telles que remove(), pop() et del pour la gestion des listes.
Maîtrisez le contrôle de version avec Git, des bases aux workflows avancés. Suivez les modifications, gérez les dépôts et collaborez efficacement dans ce cursus.
Supprimer des fichiers avec Git n’est pas toujours aussi simple qu’il y paraît. Vous supprimez un fichier sur votre système, mais cela ne signifie pas qu’il a disparu du dépôt. Il peut encore exister dans l’historique, ou pire, être ajouté par erreur au prochain commit, comme un fichier de configuration ou une clé API.
Dans ce guide, vous allez apprendre à retirer des fichiers de Git. Nous commencerons par les commandes de base comme
git rm, puis nous verrons des méthodes plus avancées, comme le nettoyage des fichiers non suivis et l’édition de l’historique des commits.Prérequis
Avant de supprimer des fichiers avec Git, vérifions que tout est en place.
D’abord, vérifiez si Git est installé. Ouvrez votre terminal et exécutez :
Si vous voyez un numéro de version, vous êtes prêt.
Si vous voyez un numéro de version, vous êtes prêt.
Vous pouvez aussi installer une interface graphique Git comme GitHub Desktop, Sourcetree ou GitKraken si vous préférez un mode visuel. Mais dans ce guide, j’utiliserai la ligne de commande (Git Bash).
Assurez-vous d’avoir les droits pour modifier le dépôt, surtout si vous travaillez en équipe ou avec un dépôt distant comme GitHub ou GitLab.
Note : certaines suppressions sont irréversibles. Il est donc conseillé de sauvegarder votre projet ou au minimum de vérifier l’état de votre dépôt avant d’exécuter des commandes qui suppriment des fichiers.
Une fois cela fait, allons-y.
Suppression de fichiers basique avec Git
Il existe plusieurs façons de supprimer des fichiers dans Git, selon votre objectif. Voici les options les plus courantes :
Utiliser git rm
La commande
git rmsupprime des fichiers de votre dépôt Git. Quand vous l’exécutez, il se passe deux choses :Mais Git ne se contente pas de supprimer le fichier. Il enregistre la suppression dans l’historique. Une fois que vous validez (commit), le fichier est officiellement retiré du projet.
Vous pouvez supprimer un fichier, plusieurs fichiers, ou un ensemble avec des jokers.
Par exemple, pour supprimer tous les fichiers de logs :
Cela indique à Git de supprimer tous les fichiers du dossier qui se terminent par
.log. Vous pouvez confirmer le changement avec :Supprimez plusieurs fichiers avec une seule commande git rm. Image par l’auteur.
Vous voulez supprimer tous les fichiers d’un dossier sans supprimer le dossier lui-même ? Utilisez :
Cela supprime tous les fichiers à l’intérieur du dossier temp sans supprimer le dossier.
Git ajoute aussi des garde-fous. Si un fichier contient des modifications non validées, Git ne le supprimera pas sauf si vous forcez. À utiliser seulement si vous êtes certain de pouvoir jeter ces changements :
Pour supprimer un dossier entier et son contenu, ajoutez l’option
-r:Cela supprime
testfolderet tous les fichiers qu’il contient.Ensuite, validez la modification avec :
Options clés de git rm
Voici les options les plus courantes avec
git rm:1. <filename>
C’est l’usage de base. Listez simplement les fichiers à supprimer :
Vous pouvez aussi utiliser un joker pour supprimer plusieurs fichiers du même type. Par exemple, pour supprimer tous les fichiers
.txt:(Ici,
*signifie « tout ». Il correspond à tout nom de fichier qui se termine par.txt.)2. --cached
Cette option supprime le fichier du dépôt mais le conserve sur votre ordinateur. Disons que j’ai ajouté par erreur un fichier sensible comme config.env. Je ne veux pas qu’il soit dans le dépôt, mais j’en ai besoin localement. J’exécuterais donc :
Ici,
git rmle supprimerait du dépôt et du répertoire de travail. Et--cachedarrête son suivi par Git (il ne sera pas poussé), tout en le laissant physiquement en place.Pour éviter qu’il ne soit réajouté, ajoutez-le à
.gitignore:3. -r
Signifie récursif. Au lieu d’un fichier, supprime le dossier et son contenu de manière récursive. Sans cela, Git renverra une erreur si vous tentez de supprimer un dossier.
Ici, j’ai créé un dossier nommé
testfolderavec deux fichiers :a.txtetb.txt. Ensuite, j’exécute :Cela supprime le dossier ainsi que tout son contenu.
4.
--dry-runSi vous n’êtes pas sûr de l’impact d’une suppression, utilisez
git rmavec l’option--dry-runcomme ceci :C’est une façon sûre d’apercevoir ce qui sera supprimé.
Ou si vous nettoyez des fichiers non suivis et voulez vérifier ce qui sera supprimé, utilisez :
Cela affichera uniquement ce que la commande supprimerait.
Analyse comparative des workflows
Il y a plusieurs façons de supprimer un fichier dans Git. Elles peuvent sembler similaires, mais leur comportement diffère.
git rm vs suppression manuelle
Prenons un fichier nommé
file.txt. Disons que je n’en ai plus besoin.Une façon de le supprimer est de l’effacer directement du système.
Sur Linux, macOS ou Git Bash :
Sur Windows (invite de commandes) :
Cela supprime le fichier de votre dossier. Mais Git ne le sait pas encore. Vous devez donc indiquer à Git que le fichier a été supprimé :
Cela prépare la suppression pour qu’elle soit incluse dans le prochain commit.
Si vous avez supprimé plusieurs fichiers et ne vous souvenez plus de tous, exécutez :
Cela prépare tous les fichiers suivis modifiés ou supprimés. Il n’inclut pas les fichiers non suivis.
Validez maintenant le changement :
Si vous utilisez
git rm, tout est géré en une seule étape. Le fichier est supprimé et la modification est immédiatement indexée :Inutile d’exécuter
git addséparément. C’est plus propre et vous n’oublierez pas d’indexer la suppression.En bref :
git rmest plus propre et plus sûr quand vous supprimez intentionnellement des fichiers suivis.Restaurer des fichiers supprimés dans Git
Et si vous supprimez un fichier puis réalisez ensuite qu’il vous est encore utile ? Pas de souci. Git propose plusieurs façons de le récupérer selon le moment où vous détectez l’erreur.
Si vous n’avez pas encore validé (commit) :
Disons que vous avez supprimé le fichier sans encore valider la modification. Vous pouvez le restaurer depuis le dernier commit comme ceci :
Cela rétablit le fichier dans votre répertoire de travail depuis le dernier commit.
Si vous avez déjà validé la suppression :
Pas de problème non plus. D’abord, trouvez le dernier commit où le fichier existait encore :
Parcourez le journal et copiez le hash du commit où le fichier était présent. Puis exécutez :
Dans les anciennes versions de Git, vous pouviez utiliser la commande ci-dessus. Elle restaure un fichier depuis un commit précis, mais pouvait aussi changer de branche.
Depuis Git 2.23, cela a été séparé en deux commandes plus claires :
git switch(pour changer de branche)git restore(pour restaurer des fichiers)Si vous souhaitez uniquement restaurer un fichier depuis un commit, utilisez :
Cela récupère le fichier depuis ce commit et le remet dans votre répertoire de travail.
Si vous ne savez pas quand le fichier a été supprimé :
Peut-être avez-vous fait de nombreux changements et ne vous souvenez plus à quel moment le fichier a disparu. Dans ce cas, utilisez git reflog ou journal des références :
Cela affiche l’historique complet de vos commits, checkouts, resets, etc.
Mais
git reflogest local uniquement et ne fonctionne pas sur les dépôts distants. Si vous travaillez avec un dépôt distant, il vaut mieux utilisergit log -- file.txtpour suivre l’historique de ce fichier.Une fois le point identifié, restaurez le fichier avec
git checkoutougit restorecomme précédemment.Corriger les fichiers manquants dans Git
Parfois, des fichiers sont supprimés directement du système — via l’explorateur, une commande rm en terminal, ou par accident. Dans ce cas, Git ne nettoie pas automatiquement. Il marque ces fichiers comme manquants et attend que vous gériez correctement la suppression.
Voyons comment traiter cette situation, étape par étape.
Étape 1 : repérer les fichiers manquants
Exécutez ceci dans le dossier du projet :
Si Git indique qu’un fichier est supprimé, cela signifie qu’il a disparu de votre système, mais que le changement n’a pas encore été indexé.
Étape 2 : indexer la suppression
Pour demander à Git d’indexer tous les changements (y compris les suppressions), exécutez :
Cela indexe toutes les modifications : nouveaux, modifiés et supprimés. Puis validez :
C’est la méthode la plus sûre pour tout nettoyer en une fois.
Étape 3 : pousser sur le dépôt distant
Si vous travaillez avec un dépôt distant, poussez le commit :
Remplacez
<branch-name>par la branche de travail, commemainoudev.Étape 4 : alternative
Disons que vous avez supprimé manuellement un lot de fichiers, par accident ou lors d’un ménage. Git pense toujours que ces fichiers existent jusqu’à ce que vous l’informiez du contraire.
Si vous ne souhaitez pas tous les retirer un par un avec
git rm, il existe un moyen plus rapide de nettoyer.Exécutez cette commande dans votre terminal :
Voici ce qu’elle fait :
git ls-files --deletedliste tous les fichiers suivis par Git qui manquent désormais sur le disque.xargs -0 git rmtransmet ces noms de fichiers àgit rmet les supprime de l’index de Git.Très utile sur un gros projet pour accélérer le nettoyage.
Note : j’ai obtenu ce message car aucun fichier suivi n’est actuellement manquant sur votre disque.
Suppression avancée de fichiers avec Git
Maintenant que nous avons vu les bases, passons à des situations plus avancées où retirer un fichier de Git ne se résume pas à exécuter
git rm. Ce sont des cas où des données sensibles sont en jeu ou où il faut nettoyer prudemment des fichiers non suivis.Retirer des données sensibles de Git
Il arrive qu’un fichier contenant des données privées, comme des clés API ou des mots de passe, soit commité par erreur. Le supprimer « normalement » ne suffit pas. Comme Git conserve l’historique complet, le fichier existe encore dans les commits antérieurs.
Pour l’effacer totalement, utilisez la commande
git filter-repo: git filter-repo (recommandé)C’est une alternative plus récente et meilleure que
filter-branch. Plus rapide, plus sûre et plus simple.Commencez par l’installer (vous aurez besoin de Python et pip) :
Puis exécutez :
Cela supprime le fichier
hide.txtde tous les commits de l’historique du dépôt.Pour vérifier, exécutez :
Si le fichier a disparu, ajoutez-le à
.gitignorepour éviter qu’il ne soit de nouveau suivi :Si vous travaillez en équipe, nettoyez l’historique réécrit et poussez en force :
Prévenez ensuite vos collègues. Ils devront re-cloner ou réinitialiser leurs copies locales pour éviter les erreurs.
Nettoyer les fichiers non suivis avec git clean
Faisons le point :
git rm, puis validez.Pour supprimer des fichiers ou dossiers non suivis, utilisez
git clean.Voici les options les plus utiles :
Ici :
-nsignifie aperçu uniquement.-fforce la suppression.-dinclut les dossiers dans le nettoyage.Note :
git cleann’affecte pas les fichiers suivis. Mais il supprimera tout ce qui n’est pas suivi, y compris des fichiers que vous souhaitiez garder. Utilisez donc toujours-nd’abord pour prévisualiser.Suppression de fichiers dans GitHub et outils GUI
La plupart de ce que nous avons vu se fait en ligne de commande. Mais tout le monde ne travaille pas ainsi, et c’est très bien. Certain·e·s développeurs utilisent des outils visuels ou travaillent directement dans GitHub.
Voyons comment la suppression fonctionne dans l’interface web de GitHub et dans d’autres outils GUI, et comment cela se compare à la ligne de commande.
Supprimer des fichiers sur le site GitHub
Si vous travaillez dans l’interface navigateur de GitHub, vous pouvez supprimer des fichiers sans terminal.
Voici comment cela fonctionne dans l’interface 2025 :
GitHub affiche alors une zone de message de commit. Ajoutez un court message, par exemple :
Vous pouvez aussi écrire une description optionnelle.
Ensuite, choisissez comment enregistrer la modification :
mainCliquez sur Commit changes, et GitHub supprimera le fichier et enregistrera la suppression dans un commit, comme le fait
git rmen ligne de commande.Supprimer des fichiers avec des outils Git GUI
Si vous utilisez une interface Git comme GitHub Desktop, Sourcetree ou Tower, le processus est également simple :
Chaque outil a son look, mais le workflow est similaire : vous suivez les changements visuellement et vous validez quand vous êtes prêt.
Bonnes pratiques par plateforme
Aperçu rapide du fonctionnement de la suppression selon les plateformes, et quand les utiliser :
Bonnes pratiques pour la suppression de fichiers avec Git
Supprimer des fichiers avec Git semble simple, mais une erreur peut casser votre code. Voici des conseils pratiques que j’applique pour sécuriser les suppressions, surtout sur des projets partagés ou de long terme.
Toujours vérifier avant de supprimer
Avant de supprimer, prenez une minute pour confirmer ce que fait le fichier :
git statuspour voir s’il est indexé ou modifié.git log -- <filename>pour consulter son historique de commits.Ce rapide contrôle m’évite des heures de récupération plus tard.
Faire des commits atomiques
Un commit atomique correspond à une unité logique de changement par commit.
Par exemple, si je supprime des fichiers inutilisés, je ne commite que ces suppressions, séparément de mes modifications de code.
Pourquoi c’est utile :
git bisectfonctionnent mieux avec des commits petits et ciblés.Collaborer prudemment lors d’une réécriture d’historique
Réécrire l’historique avec des outils comme
git filter-repoimpacte toute l’équipe. Pour éviter le chaos :git push --forceavec précaution, car cela réécrit l’historique distant.Utiliser --dry-run avant toute commande destructive
Avant d’exécuter une commande qui supprime des fichiers, testez-la :
Cette commande montre ce qui serait supprimé sans rien effacer. Voici pourquoi vous devriez toujours le faire :
Combiner git rm --cached et .gitignore
Si vous avez commité par mégarde quelque chose qui ne devrait pas être dans le dépôt (fichier de config, logs), corrigez en deux étapes :
Cela indique à Git d’arrêter de suivre le fichier, tout en le laissant sur votre machine.
gitignore:Pourquoi c’est utile :
.env,.logounode_modules) hors du dépôt.Cas limites Git : indexation et dossiers vides
Parfois, la suppression ne se déroule pas comme prévu. Vous pouvez indexer le mauvais fichier ou rencontrer des problèmes avec des dossiers vides.
Voici comment je gère ces cas fréquents.
Désindexer un fichier sans perdre vos modifications
Supposons que j’exécute
git add .et que j’indexe par erreur un fichier. Je ne veux pas perdre mes changements — je veux seulement le désindexer.Pour corriger ça, j’exécute :
Cela retire le fichier de l’index, tout en conservant les modifications.
Pour vérifier, j’utilise :
Le fichier doit maintenant apparaître comme « modified » et non plus « staged ».
Conserver des dossiers vides dans le dépôt
Par défaut, Git ignore les dossiers vides. Si je tente de valider un dossier sans fichier, Git l’ignore.
Mais il m’arrive de vouloir garder ce dossier pour de futurs journaux ou imports. L’astuce consiste à ajouter un fichier « placeholder » appelé
.gitkeep.Voici comment faire :
Cela rend le dossier « non vide » et Git le suit.
Note :
.gitkeepn’est pas une fonctionnalité Git. C’est une convention. Vous pouvez nommer le fichier comme vous voulez, mais.gitkeepindique clairement son utilité.Dépannage de la suppression de fichiers Git
Voici quelques problèmes courants rencontrés lors de suppressions dans Git, et comment les résoudre.
Le fichier apparaît encore sur le dépôt distant
Vous avez supprimé le fichier, validé la modification, mais il est toujours sur le dépôt distant. Peut-être avez-vous oublié de pousser.
Assurez-vous donc d’exécuter :
Vérifiez aussi :
Problèmes avec les sous-modules
Les sous-modules sont des dépôts Git à l’intérieur d’autres dépôts Git. Ils ne se comportent pas comme des dossiers normaux.
Si vous supprimez des fichiers dans un sous-module :
Si vous retirez entièrement le sous-module :
.gitmoduleset.git/configÉtat HEAD détaché (detached HEAD)
Dans Git,
HEADpointe généralement vers la branche courante. Mais parfois il pointe vers un commit spécifique : c’est l’état « detached HEAD ».Cela arrive si vous :
Vérifiez votre statut :
Si vous voyez :
Vous n’êtes pas sur une branche et tout nouveau changement peut être perdu lorsque vous en changez.
Voici comment corriger la situation :
Si vous avez fait des changements et souhaitez les conserver, exécutez :
Cela place votre travail sur une nouvelle branche et le sauvegarde.
Si vous avez déjà commité les changements et voulez les déplacer plus tard vers une autre branche, faites :
Si vous n’avez fait aucun changement et souhaitez simplement sortir du mode detached HEAD, exécutez :
Et voilà. Votre HEAD est réattaché et tout revient à la normale.
Erreurs de permissions ou d’état
Parfois Git refuse de supprimer un fichier, notamment sous Windows. Cela peut arriver si :
Pour corriger :
Problèmes de merge ou de rebase
Si vous voyez des erreurs telles que :
Vous êtes probablement au milieu d’un merge ou d’un rebase.
Pour terminer un rebase après résolution des conflits :
Pour annuler complètement le rebase ou le merge :
Cela restaure votre dépôt à l’état antérieur au début du merge.
Vous voulez jeter tous les changements locaux et réinitialiser votre répertoire de travail ?
Essayez :
Cela remet tous les fichiers dans l’état du dernier commit.
Dernières réflexions
Quand vous supprimez des fichiers avec Git, l’erreur est vite arrivée si vous n’êtes pas attentif. Un petit faux pas peut entraîner de gros problèmes : code cassé, travail perdu, incompréhensions dans l’équipe. D’où l’intérêt de prendre quelques secondes pour vérifier ce que vous faites.
Utilisez la bonne commande pour la situation. Si vous n’êtes pas sûr de l’effet d’une action, testez d’abord en dry run. Et si vous travaillez à plusieurs, assurez-vous que tout le monde est aligné.
Git sait faire bien plus que supprimer des fichiers. Vous pouvez supprimer des branches, annuler des erreurs avec reset et revert, ou voir précisément ce qui a changé avec git diff. Plus vous apprenez, plus votre workflow gagne en fluidité.
Avancez étape par étape. C’est ainsi qu’on progresse.