2012-05-23 16 views
7

Mam dwa git log aliasy skonfigurować: jeden, aby pokazać --name-status:Połączyć git log --stat with --name-status?

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

i jeden pokazać --stat:

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

Czy można połączyć dwa?

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

Kocham przegląd --stat, ale nie powiedzieć, czy pliki zostały dodane lub usunięte; tylko, że zostały one w jakiś sposób zmodyfikowane.

(Gdy dwie flagi wiersza polecenia są łączone, --stat jest ignorowana.)

Odpowiedz

7

Nie wiem o sposób łączenia --stat i --name-status, ale można użyć git log --stat --summary aby uzyskać listę dodania/usunięto/zmieniono nazwy/skopiowano pliki oprócz diffstat.

0

Miałem podobny pomysł na git status i git diff --stat. Ktoś pomógł mi wymyślić:

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

Próbowałem go zastąpić swoimi poleceniami dziennika git, ale są one zbyt długie (spowodowane to jest wywoływana). Jeśli skrócisz swój dziennik za pomocą -n5 (wyświetla tylko ostatnie 5 zatwierdzeń), to dobry początek.

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