Chỉ riêng phần mở rộng là không đủ để GitHub biết liệu nó có phải là một tệp văn bản hay không.
Vì vậy, nó phải nhìn vào nội dung của nó.
Và như đã đề cập trong " Tại sao Git coi tệp văn bản này là tệp nhị phân? ", Nội dung của nó có thể không bao gồm đủ ký tự ascii để đoán nó là tệp văn bản.
Bạn có thể sử dụng tệp .gitattributes để chỉ định rõ ràng a .sql
phải là văn bản, không phải là nhị phân.
*.sql diff
Cập nhật 2018: như tôi đã đề cập trong " Mã hóa Utf-8 không hoạt động trên tài liệu được mã hóa utf-8 ", Git 2.18 .gitattributes có một working-tree-encoding
thuộc tính mới .
Vì vậy, như thể hiện trong câu trả lời của Rusi :
*.sql text working-tree-encoding=UTF-16LE eol=CRLF
Như kostix bổ sung trong các nhận xét :
nếu các tệp này được tạo bởi Microsoft SQL Management Studio (hoặc bất cứ thứ gì nó được gọi trong phiên bản công cụ quản lý của MS SQL Server bạn đang sử dụng), thì các tệp mà nó lưu được mã hóa bằng UCS-2 (hoặc UTF-16) - a mã hóa hai byte, thực sự không phải là văn bản trong mắt của Git
Bạn có thể xem một ví dụ trong " Git nói" Binary files a… and b… differ
"bật cho *.reg
tệp "
Như đã đề cập trong " Đặt tệp là không nhị phân trong git ":
"Tại sao Git đánh dấu tệp của tôi là tệp nhị phân?" Câu trả lời là vì nó nhìn thấy một byte NUL (0) ở đâu đó trong 8000 ký tự đầu tiên của tệp.
Thông thường, điều đó xảy ra vì tệp đang được lưu dưới dạng thứ gì đó khác với UTF-8. Vì vậy, nó có thể được lưu dưới dạng UCS-2, UCS-4, UTF-16 hoặc UTF-32. Tất cả chúng đều có ký tự NUL được nhúng khi sử dụng ký tự ASCII
Như Neo đã đề cập trong các nhận xét (và trong Tại sao Git coi tệp văn bản này là tệp nhị phân? ):
Bạn có thể thay đổi mã hóa của tệp đã lưu trong SSMS thành UTF-8 bằng cách chọn mã hóa 'UTF-8 có chữ ký' từ mục menu 'Tùy chọn Lưu Nâng cao' trong menu Tệp.