155 votes

git: Comment ignorer tous les fichiers non suivis présents?

Existe-t-il un moyen pratique d'ignorer tous les fichiers et dossiers non suivis dans un référentiel git?
(Je connais les .gitignore .)

Ainsi, git status fournirait à nouveau un résultat net.

284voto

Diego Points 1075

Comme il a déjà été dit, d'exclure du statut de simplement utiliser:

git status -u no

Si vous voulez ignorer actuellement sans traces de fichiers, vous pouvez, à partir de la racine de votre projet, de lancement:

git status --porcelain | grep '^??' | cut -c4- >>.gitignore

Chaque appel ultérieur à l' git status explicitement ignorer ces fichiers.

Mise à JOUR: la commande ci-dessus a un inconvénient mineur: si vous n'avez pas de .gitignore encore de fichier de votre gitignore ignore lui-même! Cela se produit parce que le fichier .gitignore est créé avant l' git status --porcelain est exécutée. Donc, si vous n'avez pas de .gitignore le fichier mais je recommande d'utiliser:

echo "$(git status --porcelain | grep '^??' | cut -c4-)" >>.gitignore

Cela crée un shell interne est exécuté qui se termine avant l' .gitignore le fichier est créé.

EXPLICATION de la COMMANDE que j'ai beaucoup de votes (merci!!) Je pense que je ferais mieux d'expliquer la commande un peu:

  • git status --porcelain est utilisé à la place de git status --short parce que manuel membres de "Donner à la sortie dans un format facile à analyser format pour les scripts. Ceci est similaire à la courte sortie, mais restent stables à travers des versions git et indépendamment de la configuration de l'utilisateur." Nous avons donc à la fois la parseability et de la stabilité;
  • grep '^??' uniquement des filtres de la ligne commençant par ??, ce qui, selon le git status manuel, correspondent à la non chaînée des fichiers;
  • cut -c4- supprime les 3 premiers caractères de chaque ligne, ce qui nous donne le chemin d'accès relatif à la non chaînée fichier;
  • l' | symboles sont des tuyaux, qui passent à la sortie de la commande précédente à l'entrée de la commande suivante:
  • l' >> symboles sont rediriger les opérateurs, qui ajouter la sortie de la commande précédente dans un fichier.

21voto

sjas Points 3175

Trouvé dans le manuel

git status -u no

4voto

Jenny D Points 852

Deux manières:

utilisez l'argument "-u no" pour git-status. Voici un exemple:

 [jenny@jenny_vmware:ft]$ git status
# On branch ft
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       foo
nothing added to commit but untracked files present (use "git add" to track)
[jenny@jenny_vmware:ft]$ git status -u no
# On branch ft
nothing to commit (working directory clean)
 

Ou vous pouvez ajouter les fichiers et les répertoires directs à .gitignore, auquel cas ils ne s'afficheront jamais.

3voto

football Points 58

-u no ne montre pas non plus les fichiers non staged. -uno fonctionne comme vous le souhaitez et affiche non mis en scène, mais cache sans suivi.

1voto

VonC Points 414372

Si vous avez beaucoup de sans traces de fichiers, et ne veulent pas "gitignore" tous, remarque que, depuis git 1.8.3 (avril 22 2013), git status citera l' --untracked-files=no même si vous n'avez pas ajouté cette option en premier lieu!

"git status" suggère aux utilisateurs de regarder dans l'aide d' --untracked=no option quand il prend trop de temps.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X