2013-03-07 13 views
26

regularnie wykorzystać następujące polecenie do listy plików zmieniło między dwoma zobowiązuje:Lista wszystkich zmienionych plików o statusie zmian pomiędzy Git zobowiązuje (dodane, zmienione, usunięte)

git diff --name-only SHA1 SHA2 

Daje listę plików trochę jak ten :

 
/src/example/file1 
/src/example/file2 
/src/example/file3 

Nie ma prawie końca, jak przydatne jest to.

Naprawdę chciałbym móc pokazać przy każdym pliku krótkie odniesienie do statusu zmiany, wskazując, czy plik został dodany, zmodyfikowany czy usunięty.

Oto przykład wykazać pojęcie:

git diff --name-only --and-how-me-the-change-status SHA1 SHA2 
 
A /src/example/file1 
M /src/example/file2 
D /src/example/file3 

Stan zmiana (A, K, D) jest pokazany jako przykład tylko, nie przeszkadza mi, co to jest tak długo ponieważ jest jednoznaczny.

Jestem świadomy, że mogę użyć opcji --diff-filter, aby wyświetlić tylko dodane pliki lub tylko zmodyfikowane pliki lub tylko usunięte. Korzystanie z tej opcji oznacza, że ​​muszę uruchomić trzy polecenia, aby uzyskać trzy listy nazw plików. To jest miłe, ale mogłoby być ładniej.

Czy istnieje jedno polecenie, które można uruchomić, aby podać powyższy przykładowy wynik?

+0

To pytanie nie jest duplikatem http://stackoverflow.com/questions/1552340. Bardzo szczegółowe jest pytanie o to, jak wyświetlić status pliku, a nie tylko listę plików. –

Odpowiedz

70

Zastosowanie --name-status, jest taka sama jak --name-only plus stan zmienionych plików:

git diff --name-status SHA1 SHA2 
+2

Genialny, działa uroku! –

+1

Pamiętaj też, aby nie zgubić SHA1 i SHA2. Napisze "A" (dodane) zamiast "D" (usunięte) i na odwrót. – Stichoza

+1

Aby sortować według statusu zmiany, w systemie Windows lub Linux: '' 'git diff - nazwa-statusu SHA1 SHA2 | sortuj''' – jdforsythe