Mostrar las diferencias entre dos twigs de Git por extensión de file

¿Cómo puedo enumerar las diferencias entre dos twigs de git, pero solo mostrar esos files con cierta extensión de file?

Descubrí que lo siguiente me da todos los files diferentes entre las dos twigs:

git diff -r --name-only --no-commit-id branch1 branch2 

Pero luego intenté canalizar esto en grep y search solo files 'yml' … y no obtuve nada.

 (git diff -r --name-only --no-commit-id branch1 branch2) | grep "*.yml" 

Puedo ver los files yml generados en el primer command, pero nada en el segundo.

  • ¿No debería estar usando grep?
  • ¿Mi command grep falta algo?
  • ¿O hay una mejor manera de hacer esto?

*.yml no es una expresión regular válida.

* significa "el personaje anterior, cero o más veces", por lo que no tiene sentido como el carácter principal de una expresión regular. Si quiere encontrar todos los files que terminan en .yml , solo ... | grep '\.yml$' ... | grep '\.yml$' . estamos escapando del . porque significa "cualquier carácter", y $ significa "fin de la línea" (por lo que esto no coincidiría explícitamente con un file llamado, por ejemplo, foo.yml.j2 ).

Puede agregar un patrón tipo concha para git diff.

 git diff -r --name-only --no-commit-id branch1 branch2 "*.yml" 

Como dijo @larsks, grep acepta la expresión regular, que es diferente de los comodines de shell.

grep acepta expresión regular, donde * y . tienen significados bastante diferentes.

Y sí, no tienes que usar grep:

 git diff -r --name-only --no-commit-id branch1 branch2 -- "*.yml"