2011-07-05 10 views
19

Pracuję nad repozytorium git zawierającym ogromną liczbę plików zmienionych b/w jednym commitem na drugie, jak wyodrębnić liczbę zmian plików b/w popełnia.Jak znaleźć liczbę plików zmienionych z jednego zatwierdzenia na inny w git

+0

Maybe 'git whatchanged'? –

+1

@Kerrek SB To wygląda na dobrą odpowiedź. Dlaczego umieściłeś to w komentarzu, a nie jako odpowiedź? Przepraszam, czasami po prostu tego nie rozumiem. – SteeveDroz

+0

@Oltarus: OK, gotowe :-) Nie wydawał się wystarczająco duży, aby uzasadnić odpowiedź, i nie jestem pewien, czy to naprawdę spełnia potrzeby. Po sprawdzeniu niektórych dokumentów wydaje się, że tak jest! –

Odpowiedz

34

Narzędzie git whatchanged pokazuje podsumowanie plików, które zostały zmodyfikowane. Sama to zawiera listę wszystkich zobowiązuje, ale można również ograniczyć go tylko niedawne n zobowiązuje:

git whatchanged -1 

Aby policzyć pliki:

git whatchanged -1 --format=oneline | wc -l 

Zobacz git help whatchanged dla details.

+5

Zauważ, że to zawsze policzy pliki plus jeden, ponieważ '--format = oneline' zawiera skrót mieszający/nagłówkowy. – c00kiemon5ter

+0

@ Cook: Tak, dobra uwaga. –

+1

'git whatchanged -1 --format = oneline | ogon -n +2 | wc -l' –

1

użyj:

git log --oneline --name-status <HASH> -1 

np

$ git log --oneline --name-status bb3ae49 -1 
M  .vim/spell/en.utf-8.add 
M  .vim/spell/en.utf-8.add.spl 

ten działa podobnie jak

git whatchanged --oneline --name-status <HASH> -1 
+0

To powinna być akceptowana odpowiedź, ponieważ używanie 'git whatchanged' jest odradzane. –

11

Oprócz metod wymienionych powyżej można to zrobić też:

git diff HEAD^..HEAD --name-only - dadzą listę plików zmieniło między HEAD i jedną korektę przed głową (HEAD^). Można zastąpić HEAD^ z SHA1 z „z” popełnić i HEAD z SHA1 z „do” popełnić:

git diff <SHA1-of-from-commit>..<SHA1-of-to-commit> --name-only

więc jeśli rura wyjście do wc -l to powinno dać liczbę plików zmienił się między zatwierdzeniami.

+0

Znacznie bardziej przydatna jest możliwość liczenia plików pomiędzy arbitralnymi zatwierdzeniami - nie tylko pliki zmienione w jednym zatwierdzeniu. Zauważ, że działa również z nazwami gałęzi i znacznikami (i oczywiście innymi skrótami commit oprócz HEAD i HEAD ^) –

7
git show --stat 

Daje listę plików zmieniony tak:

1 plik zmieniony, 1 wstawianie (+), 1 skreślenia (-)

Opcjonalnie można dodać kod popełnienia jeśli don Chcę uzyskać informacje od najnowszych.

git show --stat {commit code without brackets} 
1

W oknach:

git whatchanged -1 --format=oneline | find /v /c "" 

Ważną windows-specyficzny kawałek jest, że trzeba zastąpić polecenie wc używany w innych roztworach z tym:

| find /v /c "" 
Powiązane problemy