Comme déjà dit, pour exclure du statut il suffit d'utiliser:
git status -uno # must be "-uno" , not "-u no"
Si vous souhaitez à la place ignorer définitivement les fichiers actuellement non suivis, vous pouvez, depuis la racine de votre projet, lancer:
git status --porcelain | grep '^??' | cut -c4- >> .gitignore
Chaque appel ultérieur à git statusignorera explicitement ces fichiers.
UPDATE : la commande ci-dessus a un inconvénient mineur: si vous n'avez pas .gitignoreencore de fichier, votre gitignore s'ignorera! Cela se produit car le fichier .gitignoreest créé avant l' git status --porcelainexécution de. Donc, si vous n'avez pas .gitignoreencore de fichier, je vous recommande d'utiliser:
echo "$(git status --porcelain | grep '^??' | cut -c4-)" > .gitignore
Cela crée un sous-shell qui se termine avant la création du .gitignorefichier.
EXPLICATION DE LA COMMANDE car je reçois beaucoup de votes (merci!) Je pense que je ferais mieux d'expliquer un peu la commande:
git status --porcelainest utilisé à la place de git status --shortparce que les états manuels "Donner la sortie dans un format facile à analyser pour les scripts. Ceci est similaire à la sortie courte, mais restera stable entre les versions de git et quelle que soit la configuration de l'utilisateur." Nous avons donc à la fois l'analyse et la stabilité;
grep '^??'filtre uniquement les lignes commençant par ??, qui, selon le manuel de l'état de git , correspondent aux fichiers non suivis;
cut -c4- supprime les 3 premiers caractères de chaque ligne, ce qui nous donne juste le chemin relatif vers le fichier non suivi;
- les
|symboles sont des tubes , qui passent la sortie de la commande précédente à l'entrée de la commande suivante;
- les symboles
>>et >sont des opérateurs de redirection , qui ajoutent la sortie de la commande précédente à un fichier ou écrasent / créent un nouveau fichier, respectivement.
UNE AUTRE VARIANTE pour ceux qui préfèrent utilisersed au lieu de grepet cut, voici une autre façon:
git status --porcelain | sed -n -e 's/^?? //p' >> .gitignore