Tôi giả sử tôi cần phải thiết lập một Difftool. Những gì khác nhau làm việc? Làm thế nào để bạn đặt các tham số trong?
Tôi giả sử tôi cần phải thiết lập một Difftool. Những gì khác nhau làm việc? Làm thế nào để bạn đặt các tham số trong?
Câu trả lời:
Bạn có thể đặt một textconv
tùy chọn cấu hình cho một filetype. Xem "Thực hiện khác biệt văn bản của tệp nhị phân" trong gitattribut (5) . Những gì bạn nên sử dụng phụ thuộc vào filetype.
ví dụ 1 :
Giả sử bạn muốn tìm khác biệt nội dung của tệp zip. Trong trường hợp đó, bạn nên đặt phần sau vào tệp $ GIT_DIR / config hoặc $ HOME / .gitconfig.
[diff "zip"]
textconv = unzip -v
Lần tới khi bạn yêu cầu tìm khác biệt trên tệp zip trong repo, nó sẽ gọi unzip -v
trên cả hai phiên bản và diff văn bản kết quả.
Ví dụ 2 :
Đối với các tệp pdf, bạn có thể sử dụng, ví dụ: pdfinfo
;
[diff "pdf"]
textconv = pdfinfo
Ví dụ 3 :
Nếu không có tiện ích thông tin cụ thể nào cho kiểu tệp, bạn có thể ví dụ: sử dụng hexdump
(đi kèm với FreeBSD và OSX, cũng có sẵn trên Linux):
[diff "bin"]
textconv = hexdump -v -C
Câu trả lời từ Roland Smith rất hữu ích nhưng hiện chưa đầy đủ (xem các bình luận) - có hai phần cho vấn đề này.
Bạn có thể định nghĩa một lệnh diff mới trong kho của bạn .git/config
tập tin hoặc toàn cầu cá nhân của bạn ~/.gitconfig
tập tin, ví dụ một lệnh hex diff sử dụng hexdump
:
[diff "hex"]
textconv = hexdump -v -C
binary = true
Tiếp theo, bạn cần sử dụng kho lưu trữ .gitattributes
tập tin để nói với git tập tin nào nên được sử dụng với lệnh diff đặc biệt này:
# Binary files (no line-ending conversions), diff using hexdump
*.bin binary diff=hex
Giống như .gitignore
tập tin .gitattributes
tập tin nên được kiểm tra vào kho lưu trữ của bạn.
Trong trường hợp của tôi, tôi có một số phần mở rộng tệp khác nhau mà tôi muốn coi là nhị phân (ví dụ: tránh mọi chuyển đổi kết thúc dòng nếu sử dụng git trên Windows) và cũng thấy bất kỳ sự khác biệt nào thông qua hexdump
:
https://github.com/peterjc/galax_blast/commit/5ec4695e6c3da3926fb100ca006f0f3e88c53c3d
Xem thêm https://github.com/resin-io/etcher/pull/1367 cho một ví dụ khác xác định lệnh diff hexdump để sử dụng với các tệp hình ảnh.
Trên đây là những cách toàn diện để làm như vậy .. tuy nhiên, nếu bạn chỉ cần làm điều đó cho một vài tệp, phương pháp sau đây là cách tôi sử dụng:
git checkout HEAD -- /path/to/file > ~/file
vimdiff ~/file /path/to/file
Ở đây tôi đang sử dụng vimdiff
nhưng bạn có thể sử dụng bất kỳ công cụ nào khác. Ở trên cũng có thể được kết hợp thành một kịch bản nhỏ nếu bạn cần làm đi làm lại nhiều lần.