Obtenir une liste de tous les fichiers non versionnés dans un dossier contrôlé par Git

Obtenir une liste de fichiers non versionnés dans un dossier contrôlé par Git est bien plus gênant que nécessaire. À moins que je ne craigne vraiment de lire des pages de manuel, il ne semble pas que Git offre la possibilité d’effectuer cette opération par ses propres moyens.

Il y a peut-être une manière plus élégante de faire cela, mais voici une monoplace que j’ai réunie pour cette tâche, au cas où quelqu’un d’autre aurait besoin de l’utiliser.

Edit: il se trouve que c’est un moyen standard de le faire qui fonctionne déjà bien.

git ls-files --other [--exclude-standard] 

Ou…

 git clean -dnx | cut -c 14- 

Si vous ne voulez pas voir les fichiers ignorés,

 git clean -dn | cut -c 14- 

En fait, si vous utilisez git clean avec l’option -n ou --dry-run , il affichera une liste des fichiers non suivis qu’il aurait supprimés si vous l’aviez exécuté avec l’option -f ou --force . L’ajout de l’indicateur -d inclut les répertoires vides ou ne contenant que des fichiers non suivis.

Vous pouvez donc lancer cette commande depuis un repository git:

 $ git clean -dn 

Et obtenir une sortie comme ceci:

 Would remove dir/untracked_file_1.txt Would remove untracked_file_2.txt 

Voici un bonus: Il respecte également votre fichier .gitignore, mais si vous ajoutez l’ -X , il ne listera que les fichiers ignorés.

 diff <(echo "`git ls-tree -r master | sed 's/.*\t//g'`") <(echo "`find . -type f`") | grep '> .*' | cut -c 3-