Mam kilka plików .sql, które po raz pierwszy umieściłem na githubie. Jednak kiedy patrzę na zatwierdzenie, mówi:
BIN WebRole/Sql/Database.sql View
Binary file not shown
Czy ktoś może mi powiedzieć, dlaczego jest napisane „Plik binarny nie jest wyświetlany”
Odpowiedzi:
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
.sql
powinno być tekstem, a nie plikiem binarnym.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-encoding
atrybut.Tak, jak pokazano na Rusi „s odpowiedź :
Jak kostix dodaje w komentarzach :
Możesz zobaczyć przykład w „ Git mówi„
Binary files a… and b… differ
”włączony dla*.reg
plików ”Jak wspomniano w „ Ustaw plik jako niebinarny w git ”:
Jak Neo wspomina w komentarzach (oraz w Dlaczego Git traktuje ten plik tekstowy jako plik binarny? ):
źródło
iso
' tego polecenia dos2unix, aby zobaczyć, czy to pomaga: computerhope.com/unix/dos2unix.htmKorzystając z zaakceptowanej odpowiedzi z połączonego pytania i kilku innych komentarzy, wymyśliłem to jako rozwiązanie problemu, który działa i działa na Win10
źródło
$Contents = Get-Content -LiteralPath $MyPath
To stare pytanie ma nową odpowiedź -
working-tree-encoding
właśnie z tych powodów git zyskał ostatnio opcję . Zobacz dokumentację gitattributes [Upewnij się, że strona podręcznika pasuje, ponieważ jest to całkiem nowe!]Dowiedz się, jak kodować plik sql, np. Z
file
Jeśli (powiedzmy) jego utf-16 bez bom na komputerze z systemem Windows, dodaj do swojego pliku gitattributes
Jeśli utf-16 little endinan (z bom) to zrobi
źródło
Dla tych, którzy borykają się z tym problemem w SSMS dla 2008 R2 (tak, nadal!), Możesz ustawić domyślne kodowanie w następujący sposób:
Lokalizacje mogą się różnić. Jest to katalog używany podczas domyślnej instalacji w 64-bitowym systemie Windows 7.
Służy jako szablon dla nowych plików SQL. Zapisz go, używając wymaganego kodowania (w moim przypadku Windows-1252 z zakończeniami linii Windows). Strzałka po prawej stronie przycisku „Zapisz” umożliwia wybór kodowania.
Musisz skoordynować kodowanie ze swoim zespołem programistów, aby uniknąć kłopotów z git i SSMS.
źródło
C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\ManagementStudio\SqlWorkbenchProjectItems\Sql
C:\Program Files (x86)\Microsoft SQL Server\130\Tools\Binn\ManagementStudio\SqlWorkbenchProjectItems\Sql
Oto szybkie obejście, które zadziałało w moim przypadku przy użyciu SSMS 2012. W obszarze tools => options => environment => international settings, jeśli zmienisz język z „English” na „Same as Microsoft Windows” (może pojawić się monit o ponowne uruchomienie SSMS, aby zmiany odniosły skutek), nie będzie już używać UTF-16 jako domyślnego kodowania dla nowych plików - wszystkie nowe pliki, które utworzę, mają teraz Codepage 1252 (plik => zaawansowane opcje zapisu), co jest 8-bitowym schematem kodowania i wydaje się, że nie ma z nim problemów
Git Diff
źródło
Sposobem rozwiązania tego problemu jest wymuszenie na pliku używania kodowania 8-bitowego. Możesz uruchomić ten skrypt PowerShell, aby zmienić kodowanie wszystkich plików SQL w bieżącym katalogu i jego podkatalogach.
źródło
[System.IO.File]::WriteAllLines($MyPath, $MyFile, $Utf8NoBomEncoding)