Samo rozszerzenie nie wystarczy, aby GitHub mógł sprawdzić, czy jest to plik tekstowy.
Musi więc spojrzeć na jego zawartość.
Jak wspomniano w sekcji „ Dlaczego Git traktuje ten plik tekstowy jako plik binarny? ”, Jego zawartość może nie zawierać wystarczającej liczby znaków ascii, aby zgadnąć, że jest to plik tekstowy.
Możesz użyć pliku .gitattributes, aby jawnie określić, że a .sqlpowinno być tekstem, a nie plikiem binarnym.
*.sql diff
Aktualizacja 2018: jak wspomniałem w artykule „ Kodowanie Utf-8 nie działa na dokumencie zakodowanym w utf-8 ”, Git 2.18 .gitattributes ma nowy working-tree-encodingatrybut.
Tak, jak pokazano na Rusi „s odpowiedź :
*.sql text working-tree-encoding=UTF-16LE eol=CRLF
Jak kostix dodaje w komentarzach :
jeśli te pliki są generowane przez Microsoft SQL Management Studio (lub jak to się nazywa w używanej wersji narzędzi do zarządzania MS SQL Server), zapisywane pliki są kodowane w UCS-2 (lub UTF-16) - a kodowanie dwubajtowe, które rzeczywiście nie jest tekstem w oczach Gita
Możesz zobaczyć przykład w „ Git mówi„ Binary files a… and b… differ”włączony dla *.regplików ”
Jak wspomniano w „ Ustaw plik jako niebinarny w git ”:
„Dlaczego Git oznacza mój plik jako binarny?” Odpowiedź jest taka, ponieważ widzi bajt NUL (0) gdzieś w obrębie pierwszych 8000 znaków pliku.
Zwykle dzieje się tak, ponieważ plik jest zapisywany jako coś innego niż UTF-8. Więc prawdopodobnie jest zapisywany jako UCS-2, UCS-4, UTF-16 lub UTF-32. Wszystkie z nich mają osadzone znaki NUL podczas używania znaków ASCII
Jak Neo wspomina w komentarzach (oraz w Dlaczego Git traktuje ten plik tekstowy jako plik binarny? ):
Możesz zmienić kodowanie zapisanego pliku w SSMS na UTF-8, wybierając kodowanie „UTF-8 z podpisem” z pozycji menu „Zaawansowane opcje zapisywania” w menu Plik.