Especificar dir / * en .gitattributes no suprime todo el resultado deseado

Quiero suprimir toda la salida para files en

dir/* 

cuando usas el command

  git diff 

Decidí seguir las sugerencias de Excluir files de git-diff

Método 1.

Agregar a .git / config

 [alias] mydiff = !git diff -- $(git diff --name-only | grep -Ev "dir/") 

y usando

 git mydiff 

funcionó como se esperaba y así resolvió mi problema. Sin embargo, quería usar el Método 2.

Método 2

Agregando a .gitattributes

 dir/* -diff 

y luego usando

 git diff 

Produce la salida

 diff --git a/dir/1 b/dir/1 deleted file mode 100644 index 05e9130..0000000 ... 

Pregunta ¿Cómo suprimir esta salida no deseada para todos los files en dir /?

La razón por la que ve la salida con su configuration es que dir/* -diff solo marca files en dir como files binarys, por lo que la diferencia de text no se aplicaría a ellos (ver man 5 gitattributes ).

Para suprimir cualquier salida para files en dir , debe definir un controller de diff externo como este:

  1. Asigne un nuevo controller de diff "silencioso" (puede elegir su nombre):

     $ cat .gitattributes dir/* diff=silent 
  2. Definir la function diff "silenciosa":

     $ tail -n2 .git/config [diff "silent"] command = "true" 

Eso debería hacer el truco.