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
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.