2012-01-22 17 views

Trả lời

9

git diff --name-only ${range} sẽ cung cấp cho bạn chính xác những gì bạn muốn: chỉ có tên của các tệp được sửa đổi trong thời gian này.

Thực ra, nó cung cấp cho bạn hầu như những gì bạn yêu cầu: điều này sẽ bao gồm các tệp đã bị xóa hoàn toàn, không chỉ các tệp đã sửa đổi. Nó cũng sẽ bỏ lỡ các tập tin đã được tạo ra, sau đó loại bỏ, trong phạm vi.

Để có được bức tranh hoàn chỉnh, bạn có thể muốn đi bộ phạm vi và sau đó uniq kết quả; sử dụng git log để nhận phạm vi cam kết, sau đó phân biệt mỗi lần commit với phụ huynh.

+0

Mặc dù diff không chấp nhận dãy ('commit..commit ') cú pháp tự nhiên hơn là hai đối số,' git diff [opts] commit1 commit2', làm cho nó rõ ràng nó cho bạn thấy sự khác biệt giữa hai, không làm bất cứ điều gì với các cam kết giữa. – Cascabel

4
git diff --stat SHAstart..SHAend 

sẽ cung cấp cho bạn một danh sách các tập tin đã thay đổi giữa SHAIDs SHAstart và SHAend

1

git diff --name-only --diff-filter=AM <REV1>..<REV2>

này sẽ cung cấp một danh sách các file (--name-only) sửa đổi hoặc bổ sung (--diff-filter=AM) trong tất cả các cam kết thể truy cập sau và trước (<REV1>..<REV2>) ở đâu và là một sửa đổi trong git.

Để biết thêm thông tin về cách xác định các phiên bản và phạm vi xem trang này: http://schacon.github.com/git/git-rev-parse.html

Để biết thêm thông tin về các tùy chọn khác và đặc biệt là --diff-filter tùy chọn xem: http://linux.die.net/man/1/git-diff

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