2013-01-03 8 views

Odpowiedz

22

Nie bezpośrednio, ale można użyć rury:

git status -s | while read mode file; do echo $mode $file $(stat -c %y $file); done 
+8

że działa - z jednym zastrzeżeniem - używam msysgit w oknach, gdzie wydaje się, że 'stat' jest niedostępny. ale znalazłem, że mogę użyć 'date' zamiast tego: ' git status -s | podczas odczytu pliku trybu; do echo $ mode $ (data - referencja = plik $ + "% Y-% m-% d% H:% M:% S") $ plik; done' – caitriona

+4

na moim Macu, 'stat-c' nie działa. Zrobiłem to tak: 'git status -s | podczas odczytu pliku trybu; wykonaj echo $ mode $ (stat -f "% m" $ file) $ file; done | sort'. źródło: http://stackoverflow.com/a/10198387/2486953 – jasonszhao

+0

Nie działa ze spacjami w ścieżce odpowiednio pliku $. Również nie działa: "plik $". –

7

Uwaga: Musiałem dostać zmodyfikowane pliki posortowane według daty, więc zmodyfikowano echo:

git status -s | while read mode file; \ 
    do echo $mode $(stat -c %y $file) $file; \ 
done|sort -k1.4 

jednej linii:

git status -s | while read mode file; do echo $mode $(stat -c %y $file) $file; done|sort -k1.4 

powtarzając pierwszą datę (stat), a następnie plik, udało się rozwiązać z najstarszych do najnowszej modyfikacji.


Sam Hasler dodaje in the comments:

Aby zachować przestrzenie w trybie:

IFS=''; git status -s | while read -n2 mode; read -n1; read file; do echo $mode $(stat -c %y "$file") $file; done|sort 

Czyli:

IFS=''; git status -s | while read -n2 mode; read -n1; read file; \ 
    do echo $mode $(stat -c %y "$file") $file; \ 
done|sort 
+0

Zachowywanie spacji w 'trybie': ' IFS = ''; git status -s | podczas czytania w trybie -n2; przeczytaj -n1; przeczytaj plik; do echo $ mode $ (stat -c% y "$ file") $ plik; done | sort -k1.4' –

+0

@SamHasler dobry punkt. Włączyłem Twój komentarz w odpowiedzi, aby uzyskać lepszą widoczność. – VonC

Powiązane problemy