Одного розширення недостатньо для GitHub, щоб перевірити, чи це текстовий файл.
Тож він повинен дивитись на його зміст.
І як згадувалося в " Чому Git розглядає цей текстовий файл як двійковий файл? ", Його вміст може не містити достатньо символу ascii, щоб здогадатися, що це текстовий файл.
Ви можете використовувати файл .gitattributes, щоб явно вказати, що це .sql
повинен бути текст, а не двійковий файл.
*.sql diff
Оновлення 2018: як я вже згадував у " Кодування Utf-8 не працює над документом, кодованим utf-8 ", Git 2.18 .gitattributes має новий working-tree-encoding
атрибут.
Таким чином, як показано на руси «S відповідь :
*.sql text working-tree-encoding=UTF-16LE eol=CRLF
Як додає kostix в коментарях :
якщо ці файли генеруються Microsoft SQL Management Studio (або як це ще називається у версії інструментів управління MS SQL Server, які ви використовуєте), файли, які він зберігає, кодуються в UCS-2 (або UTF-16) - двобайтове кодування, яке насправді не є текстом в очах Git
Ви можете побачити приклад у " Git каже" Binary files a… and b… differ
"для *.reg
файлів "
Як уже згадувалося в " Встановити файл як недвійковий у git ":
"Чому Git позначає мій файл як двійковий?" Відповідь полягає в тому, що він бачить байт NUL (0) десь у межах перших 8000 символів файлу.
Як правило, це відбувається тому, що файл зберігається як щось інше, ніж UTF-8. Отже, він, швидше за все, зберігається як UCS-2, UCS-4, UTF-16 або UTF-32. Усі вони мають вбудовані символи NUL під час використання символів ASCII
Як згадує Neo у коментарях (а також у розділі Чому Git трактує цей текстовий файл як двійковий файл? ):
Ви можете змінити кодування збереженого файлу в SSMS на UTF-8, вибравши кодування "UTF-8 з підписом" у пункті меню "Додаткові параметри збереження" в меню Файл.