2012-03-28 30 views

Trả lời

7

Tôi không chắc chắn ý bạn là gì, nhưng nếu bạn muốn một danh sách riêng lẻ (ví dụ: tất cả các tệp đã sửa đổi), bạn có thể sử dụng git ls-files với cờ bên phải (cho các tệp đã sửa đổi là -m). Nếu bạn muốn tất cả thông tin này cùng một lúc, bạn có thể sử dụng git status --porcelain để có được đầu ra có thể phân tích cú pháp tập lệnh của trạng thái.

+0

Trạng thái Git không liệt kê các thư mục/tệp mới đã được thêm vào repo từ xa. Phải không ? – Jean

+0

@alertjean: Bạn có ý nghĩa gì bởi "mới"? Họ có bị lật đổ không? Chúng được thêm vào nhưng không được cam kết? Họ là ai? –

+0

Cảm ơn, đây chỉ là những gì tôi đang tìm kiếm. Bây giờ tôi có thể làm ví dụ 'geany $ (git ls-files -m)' – mwfearnley

9

Những gì bạn có thể muốn là một cái gì đó như:

git fetch  # update what you know about the remote repo 
git diff --name-status master origin/master 

Nhưng nó khá khó để nói chính xác những gì bạn muốn chi nhánh diff từ câu hỏi của bạn.

7

Một cách để làm điều này là với lệnh whatchanged:

$ git whatchanged 

này hiển thị các tập tin thay đổi đối với từng cam kết trong cây và có thể được sử dụng để nhìn vào chi tiết cụ thể là tốt. Hãy nhìn vào git help whatchanged

23

Cách tốt nhất để liệt kê những tập tin được sử dụng tình trạng git --porcelain

Ví dụ: Để gỡ bỏ những file đã xóa trước đó:

git status --porcelain | awk 'match($1, "D"){print $2}' | xargs git rm 
+0

Loại bỏ đường ống cuối cùng ở cuối là cách tốt để liệt kê những tập tin nào đã bị xóa. Hữu ích nếu bạn có trạng thái git rất dài và muốn lọc trên một trạng thái cụ thể. – IanVS

5

Sử dụng khô hạn (-n) tùy chọn git add:

git add -A -n

+0

yup, đó là cái tôi muốn! – Doug

1

sử dụng với lệnh --name-status

dụ với các thẻ:

git diff v1.0.1 v1.0.2 --name-status 

ví dụ với cam kết:

git diff b79810fc4d be69e41d1c --name-status 

nó sẽ liệt kê tất cả các tập tin cập nhật với tình trạng của mình: M - sửa đổi D - xóa A - thêm

0

To được chỉ tên tập tin và vị thế của các tập tin hiện thay đổi, bạn có thể chỉ đơn giản là:

git diff --name-status

Bạn sẽ nhận được đầu ra trần như thế này:

M  a.txt 
M  b.txt 

Bây giờ, đường ống đầu ra để cut để trích xuất các cột thứ hai:

git diff --name-status | cut -f2

Sau đó, bạn sẽ chỉ có tên tệp:

a.txt 
b.txt 
Các vấn đề liên quan