2010-07-01 3 views
36

Kayıtsız dizinimde dosyaları nasıl kolayca sayabileceğimi bulmaya çalışıyorum.Git basamaklı dizindeki dosyaları sayma

git status | grep '#' | wc -l 

ancak değiştirilen dosyalar temsil etmemektedir # ile başlayan birkaç satır vardır:

denedim. Daha iyi bir şey olan var mı? Bunun için git status için bir bayrak olması gerekiyordu.

GitX gibi araçlar bile, aşamalı dosyaları/dizinleri seçmenize ve bunların kaç tane olduğunu kolayca görmenize izin vermez.

cevap

43

bir komut dosyası kullanabilirsiniz:

git diff --cached --numstat | wc -l

İsterseniz okunabilir insan bir şey: Bu benim için çalıştı

git diff --cached --stat

+0

Neden - önbellek bayrak? –

+3

@Humdinger Soru, endekste kaydedilmemiş dosyalar hakkındaydı. Bu, '--cached' ifadesinin ne olduğunu gösteriyor. '--cached' olmadan, çalışma dizininde değiştirilen dosyaları gösterir, ancak indeksi (örneğin, sınıflandırılmamış dosyalar). – mkarasek

5

deneyin git durumu s:

git status -s | egrep "^M" | wc -l 

M doğrudan hat başladıktan sonra (^) aşamalı dosyayı gösterir. "^ M", kayıtlı olmayan ancak değiştirilmiş bir dosya olacaktır. Eğer bir şey istiyorsan

+0

teşekkür, 'git durumu -s | egrep "^ M" | wc -l' çalıştı. Sanırım alanın normal ifadede "M" nin diğer tarafında olması gerekiyor. – Bradley

+0

Ah ve diğer değişiklik türlerini dahil etmek (eklendi, yeniden adlandırıldı, oluşturuldu, silindi): 'git status -s | egrep -c "^ [MARCD]" ' – Bradley

+0

Bu cevabın neden bu kadar az oyu olduğunu anlamıyorum. Bu, tüm olası durumları rapor etmek için en kolay şekilde uyarlanabilir. – Michael

13

:

git status | grep 'modified:' | wc -l

buna değer Ne için bir dizi

+1

Ve bu sayı "1" – Guillochon

+0

bu yeni eklenen dosyalarla çalışmaz. – pepero

2

döndürür tercihim:

git diff --stat | tail -n1 

Çıkışlar gibi bir şey: 0 ancak döndürülen

10 files changed, 74 insertions(+), 123 deletions(-)