objectif
Nettoyer un dépôt en supprimant les artefacts générés (.log, build, cache) sans toucher aux fichiers suivis, avec aperçu avant suppression.
code minimal
# aperçu (dry-run) des fichiers ignorés qui seraient supprimés
git clean -Xdf -n
utilisation
# supprimer les fichiers ignorés (build, cache) après vérification
git clean -Xdf
# tout supprimer: ignorés ET non suivis (attention)
git clean -xdf
# mode interactif (confirmer fichier par fichier)
git clean -Xdi
# cibler des chemins précis (plus sûr)
git clean -Xdf -- ./dist/ ./node_modules/
# protéger des fichiers même s'ils sont ignorés (exclusion)
git clean -Xdf -e '.env' -e 'storage/*'
# remettre l'arbre dans un état parfaitement propre
git reset --hard HEAD
git clean -xdf
# traiter aussi les submodules
git submodule foreach --recursive 'git clean -Xdf'
variante(s) utile(s)
# voir ce que .gitignore ignore réellement
git check-ignore -v -- **/*
# supprimer uniquement les fichiers non suivis (garder les ignorés)
git clean -df -e '!*.gitignore' -e '!*/' # ou simplement: git clean -df
# combiner avec des sauvegardes temporaires (archive)
git clean -Xdf -n | awk '{print $3}' | tar -T - -czf ignored-backup.tgz
git clean -Xdf
notes
-nfait un aperçu sans supprimer; lancez toujours cette commande avant l’exécution réelle.-Xne supprime que ce qui est ignoré par.gitignore;-xsupprime tout ce qui n’est pas suivi (plus agressif).-dinclut les dossiers,-fest requis pour confirmer la suppression.- les fichiers suivis ne sont jamais supprimés par
git clean. Pour annuler des modifications suivies, utilisezgit restore --source=HEAD -- .ougit reset --hard. - pour des dépôts avec submodules, exécutez la commande dans chaque submodule (ou utilisez
submodule foreach).