2012-03-30 24 views
26

Giả sử rằng tôi là 7 cam kết trước mã nguồn gốc/repo chính. Tôi muốn tạo một bản vá bao gồm trong các tệp vá cụ thể đã được thay đổi, không phải tất cả các tệp. Hoặc tương đương loại trừ các tệp cụ thể khỏi bản vá đã được thay đổi. Làm thế nào tôi có thể đạt được điều đó?Tạo bản vá bao gồm các tệp cụ thể trong git

Trả lời

36

Bạn có thể giới hạn đầu ra của git diff bằng cách liệt kê đường dẫn ở cuối lệnh (sau -- để tránh mọi xung đột tiềm ẩn giữa tên đường dẫn và tên chi nhánh). Ví dụ: bạn có thể làm như sau:

git diff origin/master HEAD -- app/models/region.rb doc/ > changes.patch 

... để tạo bản vá chỉ hiển thị sự khác biệt trong một tệp cụ thể và một thư mục cụ thể.

19

Bạn có thể bao gồm các file trong bản vá lỗi với:

git format-patch <rev> <files...> 

Ví dụ

git format-patch HEAD^^^ Makefile 

sẽ cung cấp cho bạn ba file 0001- [cam] ... 0003- [cam] chỉ chứa các Makefile .

+2

Điều này thực sự có hiệu quả không? tài liệu định dạng-patch không nói rằng bạn có thể cung cấp các tệp cụ thể làm tham số. –

+1

Nó làm việc cho tôi, mặc dù tôi không tìm thấy bất kỳ tham chiếu nào về tính năng đó trong tài liệu. –

+0

Tôi cũng không thể tìm thấy tài liệu về tính năng này. Đã hy vọng hiểu rõ hơn về các tùy chọn để sử dụng trong tập lệnh! –

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