2016-02-17 1 views
4

Y at-il un moyen d'obtenir la sortie de courir git diff --numstat et git diff --name-status combinés en une seule fois?
Mon problème est que si j'utilise seulement --numstat alors je ne sais pas s'il y a juste ajouté de nouvelles lignes dans un fichier ou si le fichier est complètement nouveau. Lorsque j'utilise --name-status, j'obtiens l'information si le fichier est nouveau ou non mais les statistiques sur les modifications de ligne sont manquantes.git diff --numstat avec --name-status

Actuellement, ma solution de contournement exécute les deux commandes séparément, puis la fusion de cette sortie par un script PowerShell, mais comme le repo est plutôt gros, j'aimerais avoir la sortie nécessaire en premier lieu. Merci d'avance pour votre aide!

Répondre

3

vous pouvez combiner les --numstat et les --summary drapeaux;

git diff --numstat --summary 

Notez qu'un nouveau fichier ne peut pas se trouver dans la zone "non-staging"; donc supposons que vous utilisez "git add" et "rm git", votre statut git ressemblera à ceci:

# Changes to be committed: 
# (use "git reset HEAD <file>..." to unstage) 
# 
#  new file: b 
#  deleted: a 

puis en utilisant

git diff --cached --numstat --summary 

vous donnera:

540 0 b 
0 3 a 
create mode 100644 b 
delete mode 100644 a 

NOTE: vous pouvez utiliser les indicateurs --numstat et --summary en combinaison avec git diff, git diff --cached, git show et probablement d'autres commandes.

+0

Merci! Je pense --numstat avec --summary semble être réalisable mais pour être honnête, j'espérais obtenir les données pour chaque fichier sur une seule ligne (ou pour spécifier un format personnalisé) afin que le format de sortie ne change pas et le script d'analyse serait plus simple :) – DAXaholic

1

Vous pouvez utiliser des différents drapeaux pour y parvenir:

git log --stat --summary 

Voici une capture d'écran de cette commande. Vous avez toutes les informations par fichier et résumé après chaque validation.

enter image description here

+0

Merci, mais je pense que cela ne fonctionnera pas pour deux commits séparés et je ne suis toujours pas en mesure de dire si un fichier a été ajouté ou simplement eu seulement des insertions – DAXaholic