2010-03-30 43 views
6

Tôi cần phải tạo một thay đổi của các loại giữa hai Thẻ trong một dự án được kiểm soát bằng git, cụ thể là mã nguồn Android. Danh sách này nên bao gồm bất kỳ tập tin/thư mục/etc đã được chỉnh sửa, di chuyển, đổi tên, xóa, tạo ra.Tạo danh sách các tệp/thư mục đã thay đổi/v.v. sử dụng git giữa hai thẻ

Mọi trợ giúp đều tuyệt vời. Và nếu bạn có một cách để làm điều này trên toàn bộ nguồn Android cùng một lúc ... thậm chí tốt hơn.

+0

để làm rõ: Tôi không quan tâm Những thay đổi được thực hiện trong các tệp chỉ mà chúng đã thay đổi. Tuy nhiên tôi cần phải biết những gì thay đổi đã được thực hiện cho các thư mục và liên kết sym. – dan

+1

http://stackoverflow.com/questions/1038589/how-do-i-find-common-files-changed-between-git-branches có giúp ích không? – VonC

+0

Eh? Bạn cần tệp nhưng bạn không cần tệp? Câu hỏi của bạn không rõ ràng ... – drozzy

Trả lời

6

Nếu bạn cần phải tìm các tập tin khác nhau:

git diff --name-only <tag1> <tag2> 

Nếu bạn cần phải tìm tất cả các file đã thay đổi:

git log --name-only --pretty=format: <tag1>..<tag2> | 
    grep -v '^$' | sort | uniq 

--pretty=format: là để ngăn chặn thông tin in ấn về các cam kết, và chỉ in phần khác biệt. Lưu ý rằng trong trường hợp của git, hãy ghi lại thứ tự của <tag1><tag2> vấn đề.

+0

Điều đó chắc chắn đã giúp và tôi nghĩ nó giải quyết được vấn đề của tôi phần lớn. Một vài câu hỏi. 1) có cách giới hạn điều này để chỉ hiển thị một loại phần tử (tức là chỉ các thư mục) hoặc ít nhất là nhãn loại phần tử. 2) bạn đề cập đến thứ tự thẻ quan trọng, bạn có thể chỉ cho tôi một tài liệu giải thích cách đặt hàng tạo sự khác biệt để tôi có thể xác định đúng thứ tự của mình hay không. (Tôi sẽ tiếp tục nghiên cứu tất cả điều này và đăng lại nếu tôi tìm thấy điều mình đang tìm kiếm độc lập) – dan

+0

chỉnh sửa ví dụ trên để đọc (tức là chỉ các liên kết tượng trưng) khi đọc nhận xét bên dưới. cần một lệnh khác để tìm các thư mục đã thay đổi – dan

+0

@dan: Re 2.) trong trường hợp "git log .. ' "nó hiển thị lịch sử từ sau tag2 đến tag1, tức là tag1 phải sớm hơn tag2. Vâng, bạn luôn có thể sử dụng đối xứng ' ... ' cho thấy những thay đổi từ tổ tiên chung ... –

1

Như tôi đã đề cập trong các ý kiến, "How do I find common files changed between git branches?" sự là giải pháp chính ở đây:

git log [--pretty=<format>] --name-only tag1..tag2 

hoặc

git diff --name-only tag1 tag2 

(Cũng đề cập trong Gitology recipe)

NHƯNG: như đã đề cập trong "How to get a list of directories deleted in my git repository? ", Git chỉ theo dõi nội dung của tệp, chứ không phải thư mục mình.

Để bao gồm thông tin về các thư mục, bạn cần bắt đầu chơi với git diff-tree.

bất kỳ thư mục nào đã được tạo hoặc xóa sẽ có 040000 trong cột thứ hai hoặc đầu tiên và 000000 trong cột đầu tiên hoặc cột thứ hai tương ứng. Đây là mục nhập 'chế độ' của cây cho các mục nhập bên trái và bên phải.

Giống như (theo Charles Bailey):

git diff-tree -t origin/master master | grep 040000 | grep -v -E '^:040000 040000' 
+0

cảm ơn bạn đã trả lời và liên kết để biết thêm thông tin Tôi sẽ xem qua chúng và xem liệu chúng có hoạt động cho tình huống duy nhất của tôi hay không. – dan

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