2017-03-27 3 views
0

Comment puis-je lister les différences entre deux branches git, mais afficher uniquement ces fichiers avec une certaine extension de fichier?Afficher les différences entre deux branches Git par extension de fichier

J'ai trouvé que ce qui suit me obtient tous les fichiers différents entre les deux branches: -

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

Mais j'ai essayé de tuyau en ce grep et la recherche de fichiers « seulement » YML .... et je n'ai rien. Je peux voir les fichiers yml dans la première commande, mais rien dans la seconde.

  • Est-ce que je ne devrais pas utiliser grep?
  • Ma commande grep manque-t-elle quelque chose?
  • Ou y at-il une meilleure façon de le faire?

Répondre

1

*.yml n'est pas une expression régulière valide. Signifie * signifie "le caractère précédent, zéro ou plusieurs fois", donc cela n'a aucun sens en tant que caractère principal d'une expression régulière. Si vous voulez trouver tous les fichiers se terminant par .yml, juste ... | grep '\.yml$'. nous échappons au . parce que . signifie "n'importe quel caractère", et $ signifie "fin de la ligne" (donc ceci explicitement pas correspond à un fichier nommé, par exemple, foo.yml.j2).

1

Vous pouvez ajouter un motif de type coque pour diff. Comme l'a dit @larsks, grep accepte les expressions rationnelles, ce qui est différent des caractères génériques de shell.

0

grep accepte l'expression régulière, où * et . ont des significations assez différentes.

Et oui, vous ne devez pas utiliser grep:

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