205 votes

Comment faire pour que git-diff et git log ignorent les fichiers nouveaux et supprimés ?

Parfois, il y a quelques fichiers modifiés ainsi que des fichiers nouveaux, supprimés et/ou renommés. En faisant git diff o git-log J'aimerais les omettre, afin de mieux repérer les modifications.

En fait, le mieux serait d'énumérer les noms des fichiers nouveaux et supprimés sans leur contenu. Pour les fichiers "anciens" renommés en "nouveaux", j'aimerais pouvoir obtenir la différence entre "anciens" et "nouveaux".

278voto

Charles Bailey Points 244082

El --diff-filter L'option fonctionne avec les deux diff et le journal.

J'utilise --diff-filter=M beaucoup qui limite les sorties de diff aux seules modifications de contenu.

Pour détecter les renommages et les copies et les utiliser dans la sortie diff, vous pouvez utiliser -M y -C respectivement, ainsi que le R y C options pour --diff-filter .

103voto

TeeTracker Points 692
  • Document officiel :
--diff-filter=[(A|C|D|M|R|T|U|X|B)…​[*]]

Sélectionnez uniquement les fichiers qui sont ajoutés (A), copiés (C), supprimés (D), modifiés (M), renommés (R), dont le type (c'est-à-dire fichier ordinaire, lien symbolique, sous-module, ) a été modifié (T), qui sont non fusionnés (U), inconnus (X) ou dont le couplage a été rompu (B). Toute combinaison de caractères de filtrage (y compris aucun) peut être utilisée.

Lorsque * (All-or-none) est ajouté à la combinaison, tous les chemins sont sélectionnés s'il existe un fichier correspondant à d'autres critères de la comparaison ; si aucun fichier ne correspond à d'autres critères, rien n'est sélectionné.

De plus, ces lettres majuscules peuvent être réduites pour être exclues. Par exemple, --diff-filter=ad exclut les chemins ajoutés et supprimés.

Exemple : montrer seulement les fichiers ajoutés, changés, modifiés, exclure les fichiers supprimés :

git diff --diff-filter=ACM

-3voto

Keith Thompson Points 85120

UPDATE : Le site réponse acceptée de Charles Bailey est la bonne ; la fonctionnalité souhaitée est déjà intégrée dans git.

Je vais laisser cette réponse ici car elle pourrait donner des idées pour des choses qui ne sont pas intégrées dans git.


git diff montre les fichiers nouveaux et supprimés en les comparant à /dev/null . Il ne devrait pas être trop difficile d'écrire quelque chose (j'utiliserais Perl moi-même) qui recherche les éléments suivants /dev/null et filtre les lignes suivantes jusqu'au diff suivant. Puis git diff ... | the-filter .

Les fichiers renommés sont une autre affaire ; je n'ai pas (encore) de bonne réponse à ce sujet.

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