240 votes

Exclure un répertoire de git diff

Je me demande comment je peux exclure un répertoire entier de mon Git diff. (Dans ce cas /spec). Je suis de la création d'un diff pour l'ensemble de notre version du logiciel à l'aide de la commande git diff. Cependant les changements aux spécifications ne sont pas pertinentes pour la présente procédure, et il suffit de créer des maux de tête. maintenant, je sais que je peux faire

git diff previous_release..current_release app/

Cela permettrait de créer un diff pour tous les changements dans le répertoire app, mais pas, par exemple, dans le répertoire lib/. Personne ne sait comment accomplir cette tâche? Merci!

Edit: je veux juste être clair, je sais que je peux tout simplement les cordes les paramètres de tous mes répertoires sur la fin, moins /spec. J'espérais qu'il y avait un moyen de vraiment exclure un répertoire unique dans la commande.

148voto

Jefromi Points 127932

En supposant que vous utilisiez bash et que vous ayez activé extglob, vous pouvez gérer cela du côté du shell:

 git diff previous_release current_release !(spec)
 

Vous évite d'avoir à énumérer toutes les autres choses.

Ou, agnostique à la coquille:

 git diff previous_release current_release --name-only | grep -v '^spec/' | xargs git diff previous_release current_release --
 

Vous pouvez le résumer dans un script shell à une ligne pour éviter de retaper les arguments.

37voto

VonC Points 414372

Vous pouvez essayer de supprimer l'attribut diff pour tous les fichiers du répertoire lib.
.gitattributes :

 lib/* -diff
 

-7voto

Jed Schneider Points 6253
git diff app lib

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X