web-dev-qa-db-fra.com

git diff --stat exclure certains fichiers

Essayer d'adapter les réponses de Vous voulez exclure le fichier de "git diff" pour le --stat drapeau et échec - le réponse acceptée (créer un pilote) semble uniquement unix (rediriger vers/bin/true, quoi que cela signifie) plus il crée un pilote et l'affecte au type de fichier de façon permanente , alors que je cherche un interrupteur pour désactiver temporairement le diff pour un fichier (ou plutôt certains fichiers).

Le script solution :

git diff `git status -s |grep -v ^\ D |grep -v file/to/exclude.txt |cut -b4-`

appelle en fait git status et édite sa sortie - alors que ce que je veux, c'est demander à git diff lui-même d'ignorer certains fichiers lors du calcul de (simple) --stat (seules les lignes ont changé). J'ai parcouru git-diff docs mais ne semble pas trouver une telle option. Quelqu'un m'aide?

$ git --version
git version 2.6.1.windows.1
17
Mr_and_Mrs_D

L'astuce d'exclusion de pathspec, décrite dans Faire en sorte que 'git log' ignore les changements pour certains chemins , fonctionne ici:

git diff --stat -- . ':(exclude)file/to/exclude.txt'

ou, si vous êtes dans un sous-répertoire:

git diff --stat -- :/ ':(exclude,top)file/to/exclude.txt'

Ce dernier peut être orthographié de différentes manières. Par exemple, cela fonctionne également:

git diff --stat ':(top)' :!/file/to/exclude.txt

de même que:

git diff --stat :/: :!/:file/to/exclude.txt

Celles-ci sont décrites dans la documentation gitglossary sous la section "pathspec". Notez que la fonctionnalité d'exclusion est nouvelle dans Git version 1.9 (et légèrement cassée jusqu'à 1.9.2). Le premier / Est un alias pour top et le ! Est un alias pour exclude, les formes longues nécessitant les parenthèses. Le signe deux-points avant le nom de chemin réel est facultatif lors de l'utilisation des alias à un seul caractère, mais interdit lors de l'utilisation des parenthèses (cette règle me déclenche à chaque fois — je continue à vouloir utiliser :(exclude):... plutôt que :(exclude)...). Les guillemets simples autour des composants pathspec (top) Et (exclude) Ci-dessus visent à protéger les parenthèses contre toute interprétation par les shells (Unix/Linux); Windows Shell peut avoir des idées différentes sur les personnages à protéger.

39
torek