git ready

Apprendre git, un commit à la fois
Par Nick Quaranto. Traduction par Edouard Swiac

Nettoyer les fichiers non répertoriés

committed 16 Jan 2009

Notre première astuce proposée par un lecteur provient de Dav Glass, et nous parle d’une commande utilisée pour garder ses dépôts en ordre. Vous avez une astuce à partager ? Proposez la !

Des fichiers et des répertoires peuvent se retrouver dans le répertoire courant de vos dépôts après des fusions, l’utilisation de scripts générant des fichiers ou bien déposés la par erreur. Dans tous les cas, vous n’avez pas besoin de les ajouter à .gitignore, vous devez juste les supprimer.

git clean -n -d <path>

va exécuter une version de test de cette commande et lister les fichiers et répertoires detinés à être supprimés. En l’appliquant sur gitready, on obtient la sortie suivante :

Would remove _posts/2009-01-16-cleaning-up-untracked-files.textile

Ce qui poserait problème si ce fichier était supprimé.

Je n’ai pas encore ajouté cette page à l’état staging, donc le fichier n’est pas répertorié. Si vous voulez simplement que les fichiers soient supprimés et pas les répertoires, enlever l’option -d. Une fois que vous êtes certain de vouloir supprimer tous ces fichiers, la commande

git clean -d <path>

effectuera réellement la suppression des fichiers.Si vous omettez <path>, git effectuera cette opération sur l’ensemble du répertoire courant. De plus, vous pouvez ajouter l’option -f suivant les droits sur les fichiers ou toute autre situation la nécessitant.

La suppression peut se faire avec des options supplémentaires : si vous voulez effectuer une suppression normale et supprimer également les fichiers que git ignore habituellement, l’option -x est à utiliser. Si vous voulez juste jeter les fichiers ignorés et eux seulement,utiliser l’option -X .

Si on voulait faire un grand nettoyage :

$ git clean -n -d -x
Would remove .DS_Store
Would remove _posts/.2009-01-16-cleaning-up-untracked-files.textile.swp
Would remove _posts/2009-01-16-cleaning-up-untracked-files.textile
Would remove _site/
Would remove images/.DS_Store
Would remove images/_site/

Cette commande détruirai les fichiers décrits dans le fichier .gitignore et supprimerai les autres fichiers et répertoires superflus. Dans tous les cas git clean doit être utilisé avec soin et mieux vaut contrôler ce que vous allez définitivement supprimer.

Comme d’habitude, si vous connaissez d’autres astuces à utiliser avec git clean, merci de les ajouter à vos commentaires !