2012-10-24 43 views
7

Làm cách nào để có danh sách tất cả các tệp đã được thay đổi trong chi nhánh? Tôi không thể làm một git-diff bởi vì chi nhánh đã được sáp nhập vào master.Git truy xuất danh sách tất cả các tệp đã được sửa đổi trong chi nhánh

Tôi sẽ cần một cách để liệt kê tất cả các cam kết trong một nhánh và trích xuất đường dẫn của các tệp, mà không có bản sao.

Nếu có ai đó đã làm một điều như thế này trước khi nó thực sự được đánh giá cao,

cảm ơn rất nhiều!

Trả lời

1

này hoạt động nếu chi nhánh được trỏ đến việc hợp nhất cam kết:

git diff branch_name^..master --name-only 
3

Nếu chúng ta xem xét chi nhánh của bạn như BranchA Mà được phân nhánh từ chủ, bạn có thể làm:

git diff --name-status `git merge-base BranchA master`..BranchA 

Điều này sẽ cung cấp cho bạn danh sách các tệp đã thay đổi trong nhánh có tiền tố (M cho sửa đổi, A để thêm, D cho đã xóa).

2

Thực hiện git log và tìm ra từ đó cam kết bạn muốn biết sự khác biệt. Giả sử bạn xác định rằng giá trị băm của cam kết bạn muốn là aaaaaa. Sau đó chạy:

git diff aaaaaa --stat 
0

Tôi gặp phải vấn đề tương tự này và giải pháp @Michael Burtin đã làm việc nhiều nhất. Tuy nhiên, tôi muốn thêm điều này vào một tập lệnh sẽ hoạt động trên bất kỳ nhánh nào, vì vậy nó không thể chứa tên chi nhánh. Đây là những gì tôi đã đưa ra:

git diff --name-only $(git merge-base master HEAD) 

Tìm thấy tổ tiên của cả nhánh và nhánh hiện tại, sau đó phân biệt với nhánh hiện tại.

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