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

Il y a parfois quelques fichiers modifiés avec des fichiers nouveaux, supprimés et / ou renommés. En faisant git diff ou git-log je voudrais les omettre pour que je puisse mieux repérer les modifications.

En fait, il serait préférable de lister les noms des fichiers nouveaux et supprimés sans leur contenu. Pour “ancien” renommé en “nouveau”, j’aimerais éventuellement faire la différence entre “ancien” et “nouveau”.

L’option --diff-filter fonctionne avec diff et log.

J’utilise --diff-filter=M qui restreint les sorties de diff aux seules modifications de contenu.

Pour détecter les noms et les copies et les utiliser dans la sortie diff, vous pouvez utiliser -M et -C respectivement, avec les options R et C pour --diff-filter .

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

Sélectionnez uniquement les fichiers ajoutés (A), Copiés (C), Supprimés (D), Modifiés (M), Renommés (R), leur type (fichier régulier, lien symbolique, sous-module,…) modifié (T), sont non fusionnés (U), sont inconnus (X) ou leur paire a été cassée (B). Toute combinaison des caractères de filtre (y compris aucun) peut être utilisée.

Lorsque * (Tout ou rien) est ajouté à la combinaison, tous les chemins sont sélectionnés s’il existe un fichier correspondant à d’autres critères dans la comparaison. Si aucun fichier ne correspond à d’autres critères, rien n’est sélectionné.

En outre, ces majuscules peuvent être supprimées pour les exclure. Par exemple, –diff-filter = ad exclut les chemins ajoutés et supprimés.

Exemple: afficher uniquement les fichiers ajoutés, modifiés, modifiés exclure les fichiers supprimés:

 git diff --diff-filter=ACM 

MISE À JOUR: La réponse acceptée par Charles Bailey est la bonne; la fonctionnalité souhaitée est déjà intégrée à git.

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


git diff affiche 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 /dev/null et filtre les lignes suivantes jusqu’au diff suivant. Alors git diff ... | the-filter git diff ... | the-filter .

Les fichiers renommés sont différents. Je n’ai pas (encore) une bonne réponse à cela.