2010-07-01 26 views
36

Tôi đang cố gắng tìm ra cách dễ dàng đếm các tệp trong chỉ mục không cam kết của mình.tập tin git count trong chỉ mục được phân đoạn

Tôi đã thử:

git status | grep '#' | wc -l 

nhưng có một vài dòng bắt đầu bằng # mà không đại diện đã thay đổi tập tin. Bất cứ ai có bất cứ điều gì tốt hơn? Hình như đã có một lá cờ cho git status để làm điều này.

Ngay cả các công cụ như GitX cũng không dễ dàng cho phép bạn chọn các tệp/thư mục được dàn dựng và xem có bao nhiêu tệp trong số đó.

Trả lời

43

Nếu bạn muốn một cái gì đó một kịch bản có thể sử dụng:

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

Nếu bạn muốn một cái gì đó con người có thể đọc được:

git diff --cached --stat

+0

Tại sao cờ --cached? –

+3

@Humdinger Câu hỏi đặt ra là về các tệp không được cam kết trong chỉ mục, đó là những gì '--cached' hiển thị. Không có '--cached', nó sẽ hiển thị các tệp được thay đổi trong thư mục làm việc nhưng không hiển thị chỉ mục (tức là các tệp không được tổ chức). – mkarasek

5

Cố tình trạng git -s:

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

M trực tiếp sau khi bắt đầu dòng (^) chỉ ra một tập tin dàn dựng. "^ M" sẽ là một tệp không thay đổi nhưng bị thay đổi.

+0

Cảm ơn, đó quay trở lại 0 nhưng 'status git -s | egrep "^ M" | wc -l' đã làm việc. Tôi nghĩ rằng không gian cần phải được ở phía bên kia của "M" trong regex. – Bradley

+0

Ah và bao gồm các loại thay đổi khác (thêm, đổi tên, tạo, xóa): 'git status -s | egrep -c "^ [MARCD]" ' – Bradley

+0

Tôi không hiểu tại sao câu trả lời này lại có quá ít phiếu bầu. Điều này dễ dàng thích nghi nhất để báo cáo tất cả các trạng thái có thể. – Michael

13

này đã làm việc cho tôi:

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

nó trả về một số

+1

Và số đó là "1" – Guillochon

+0

tính năng này không hoạt động với các tệp mới được thêm. – pepero

2

Đối với những gì nó có giá trị, tôi thích:

git diff --stat | tail -n1 

Đầu ra cái gì đó như:

10 files changed, 74 insertions(+), 123 deletions(-) 
Các vấn đề liên quan