2012-05-23 15 views
7

Ho due git log alias istituito: uno per mostrare --name-status:Combina git log --stat con --name-status?

... 
| A path/to/yourfile.c 
| M path/to/myfile.c 
| M path/to/my/otherfile.c 
... 

e uno per mostrare --stat:

... 
| path/to/yourfile.c   | 2 ++ 
| path/to/myfile.c   | 2 +- 
| path/to/my/otherfile.c  | 27 +++++----- 
... 

E 'possibile combinare le due cose?

... 
| A path/to/yourfile.c   | 2 ++ 
| M path/to/myfile.c   | 2 +- 
| M path/to/my/otherfile.c  | 27 +++++----- 
... 

amo la panoramica --stat, ma non mi dice se sono stati aggiunti o rimossi i file; solo che sono stati modificati in qualche modo.

(Quando i due bandiere della riga di comando sono combinati, --stat viene ignorato.)

risposta

7

Non so di un modo per combinare --stat e --name-status, ma è possibile utilizzare git log --stat --summary per ottenere un elenco di aggiunta/file rimossi/rinominati/copiati in aggiunta a diffstat.

0

Ho avuto un'idea simile per git status e git diff --stat. Qualcuno mi ha aiutato a venire con:

git status | sed -e "$(git diff --stat | sed -e 's#/#\\/#g' | awk '/\|/ {print "s/" $1 "/" $0 "/;"}')" 

ho cercato di sostituire con i tuoi comandi git log, ma sono troppo lunghi (a causa di esso che è paging). Se abbrevia il tuo registro con -n5 (mostra solo gli ultimi 5 commit) è un buon inizio

git log --name-only -n5| sed -e "$(git log --stat -n5 | sed -e 's#/#\\/#g' | awk '/\|/ {print "s/" $1 "/" $0 "/;"}')"