Làm cách nào để Git coi một tệp là tệp nhị phân?


104

Gặp sự cố với một dự án có kích thước trung bình trong đó các tệp dự án studio trực quan tiếp tục gặp sự cố do git coi chúng là văn bản và hợp nhất. Tôi chỉ muốn đặt tệp là nhị phân để git sẽ không tự động hợp nhất các tệp này.

Có cách nào để làm việc này không?


2
Nhưng tệp dự án Visual Studio là tệp văn bản và có cần phải được hợp nhất không?
CB Bailey

1
@CharlesBailey Họ sẽ định kỳ hợp nhất theo cách tồi tệ nhất có thể, làm hỏng tất cả các bản dựng của bạn. Tôi không muốn loay hoay với XML, tôi muốn nó yêu cầu tôi thêm các tệp mới theo cách thủ công hoặc thậm chí có thể chạy một công cụ khác biệt với XML biết cách xử lý điều đó đúng cách.
michael.bartnett

1
@ michael.bartnett: Chắc chắn là chỉ khi bạn làm hỏng việc hợp nhất?
CB Bailey

1
@CharlesBailey Tất nhiên nếu tôi hợp nhất theo cách thủ công thì đó không phải là vấn đề. Nhưng đó không phải là thứ tôi nên hợp nhất theo cách thủ công. Nó thường là một mục xây dựng thêm / xóa / chỉnh sửa ... hoàn toàn có thể tự động kết hợp, nhưng không phải theo phương pháp khác nhau thông thường trên mỗi dòng. Kiểm tra bản trình bày này để biết thêm về khái niệm.
michael.bartnett

@ michael.bartnett: Sau đó, hãy thiết lập trình điều khiển hợp nhất tốt hơn. Điểm tôi đã làm (10 tháng trước) là các tệp dự án có thể và nên được hợp nhất. Cá nhân tôi thích sửa chữa một chiếc máy hợp lý hơn là làm hoàn toàn bằng tay, điều đó có vẻ như là công việc không cần thiết.
CB Bailey

Câu trả lời:


135

Có, bằng cách sử dụng các thuộc tính . Đặt một cái gì đó như thế này vào .gitattributestệp của bạn (tạo nó nếu nó không tồn tại):

*.sln binary
*.suo binary
*.vcxproj binary

Đây binarythực sự là một macro được xác định trước , tương đương với -diff -merge -text.

Nếu bạn muốn vẫn có thể nhìn thấy sự khác biệt, bạn có thể sử dụng:

*.sln -merge -text

Bằng cách này, các *.slntệp sẽ không được hợp nhất, không được chuẩn hóa eol, nhưng vẫn có thể khác biệt.


1
tập tin này ở đâu?
Neves

@neves Mọi nơi có thể đặt tệp gitignore, theo tài liệu được cung cấp bởi liên kết trong câu trả lời đã cho.
Michael Wild

4
@neves: bạn có để làm cho một, hoặc ở địa phương trong repo của bạn hoặc trên toàn cầu như ví dụ ~/.gitattributesvà sau đó chạy git config --global core.attributesfile ~/.gitattributessee stackoverflow.com/questions/28026767/...
Jan-GLX

Điều gì xảy ra với những tệp này nếu chúng không được hợp nhất tự động? Một phiên bản được chọn hay bạn phải hợp nhất theo cách thủ công?
ClydeTheGhost

1
@ClydeTheGhost bạn sẽ phải chọn một.
Michael Wild

6

Bạn nên xác định các thuộc tính tệp nhị phân trong .gitattributestệp của mình (tạo nó nếu nó không tồn tại) bằng cách đặt các dòng này vào đó, để ngăn nó xử lý nó dưới dạng tệp khác văn bản:

# Define binary file attributes.
# - Do not treat them as text.
# - Include binary diff in patches instead of "binary files differ."
*.sln     -text diff
*.suo     -text diff
*.vcxproj -text diff
*.gif     -text diff
*.gz      -text diff
*.ico     -text diff
*.jpeg    -text diff   
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.