2013-03-07 28 views
26

Tôi thường xuyên sử dụng lệnh sau để liệt kê các file đã thay đổi giữa hai cam kết:Liệt kệ file bị tất cả đã thay đổi với tình trạng thay đổi giữa Git cam kết (bổ sung, sửa đổi, xóa)

git diff --name-only SHA1 SHA2 

Nó cung cấp một danh sách các tập tin có phần như thế này :

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

Gần như không có kết thúc về mức độ hữu ích của việc này.

Tôi thực sự muốn có thể hiển thị bên cạnh mỗi tệp tham chiếu ngắn gọn về trạng thái thay đổi, cho biết liệu tệp đã được thêm, sửa đổi hay xóa.

Dưới đây là một ví dụ để chứng minh khái niệm:

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

Các thay đổi trạng thái (A, M, D) được thể hiện như một ví dụ duy nhất, tôi không quan tâm điều này là quá lâu vì nó rõ ràng.

Tôi biết rằng tôi có thể sử dụng tùy chọn --diff-filter để chỉ liệt kê các tệp được thêm hoặc chỉ các tệp đã sửa đổi hoặc chỉ các tệp đã xóa. Sử dụng tùy chọn này có nghĩa là tôi phải chạy ba lệnh để lấy ba danh sách tên tệp. Điều này là tốt đẹp nhưng có thể đẹp hơn.

Có một lệnh duy nhất tôi có thể chạy để cung cấp cho tôi kết quả ví dụ ở trên không?

+0

Câu hỏi này không phải là một bản sao của http://stackoverflow.com/questions/1552340. Nó rất cụ thể về yêu cầu làm thế nào để hiển thị trạng thái tập tin, không chỉ là một danh sách các tập tin. –

Trả lời

70

Sử dụng --name-status, nó giống như --name-only cộng với tình trạng của tập tin thay đổi:

git diff --name-status SHA1 SHA2 
+2

Rực rỡ, làm việc quyến rũ! –

+1

Ngoài ra, hãy đảm bảo không đặt sai SHA1 và SHA2. Nó sẽ viết 'A' (được thêm) thay vì' D' (đã xóa) và ngược lại. – Stichoza

+1

Để sắp xếp theo trạng thái thay đổi, trên Windows hoặc Linux: '' 'git diff --name-status SHA1 SHA2 | sắp xếp''' – jdforsythe

Các vấn đề liên quan