Ich habe einige .sql-Dateien, die ich gerade zum ersten Mal auf github gepusht habe. Wenn ich mir jedoch das Commit anschaue, heißt es:
BIN WebRole/Sql/Database.sql View
Binary file not shown
Kann mir jemand sagen, warum es heißt "Binärdatei nicht angezeigt"
Antworten:
Die Erweiterung allein reicht GitHub nicht aus, um festzustellen, ob es sich um eine Textdatei handelt.
Also muss es sich seinen Inhalt ansehen.
Und wie unter " Warum behandelt Git diese Textdatei als Binärdatei? " Erwähnt , enthält der Inhalt möglicherweise nicht genügend ASCII-Zeichen, um zu vermuten, dass es sich um eine Textdatei handelt.
Sie können eine .gitattributes-Datei verwenden, um explizit anzugeben, dass a
.sql
ein Text und keine Binärdatei sein soll.Update 2018: Wie ich in " Utf-8-Codierung funktioniert nicht mit utf-8-codiertem Dokument " erwähne, hat Git 2.18 .gitattributes ein neues
working-tree-encoding
Attribut.So, wie in gezeigt Rusi ‚s Antwort :
Wie kostix in den Kommentaren hinzufügt :
Sie können ein Beispiel in " Git sagt"
Binary files a… and b… differ
für*.reg
Dateien "sehen.Wie in " Datei als nicht binär in git festlegen " erwähnt:
Wie Neo erwähnt in den Kommentaren (und warum diese Textdatei als Binärdatei ist Git behandeln? ):
quelle
iso
' dieses Befehls dos2unix, um festzustellen, ob diesUnter Verwendung der akzeptierten Antwort aus der verknüpften Frage und einiger anderer Kommentare habe ich dies als Lösung für das Problem gefunden, das funktioniert und unter Win10 ausgeführt wird
quelle
$Contents = Get-Content -LiteralPath $MyPath
Diese alte Frage hat eine neue Antwort -
working-tree-encoding
genau aus diesen Gründen hat git kürzlich eine Option entwickelt . Siehe gitattributes docs [ Stellen Sie sicher, dass Ihre Manpage übereinstimmt, da dies ziemlich neu ist!]Finden Sie die Kodierung der SQL-Datei heraus, zB mit
file
Wenn (sagen wir) sein utf-16 ohne bom auf Windows-Maschine, dann fügen Sie zu Ihrer gitattributes-Datei hinzu
Wenn utf-16 Little Endinan (mit Bom) es schaffen
quelle
Für diejenigen, die mit diesem Problem in SSMS für 2008 R2 zu kämpfen haben (ja, immer noch!), Können Sie die Standardcodierung wie folgt festlegen:
Die Standorte können variieren. Dies ist das Verzeichnis, das von der Standardinstallation unter Windows 7 64-Bit verwendet wird.
Dies wird als Vorlage für neue .SQL-Dateien verwendet. Speichern Sie es mit der von Ihnen gewünschten Codierung (in meinem Fall Windows-1252 mit Windows-Zeilenenden). Der Pfeil rechts neben der Schaltfläche "Speichern" bietet Ihnen eine Auswahl an Codierungen.
Sie müssen die Codierungen mit Ihrem Entwicklungsteam koordinieren, um Git- und SSMS-Probleme zu vermeiden.
quelle
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
Hier ist eine kurze Problemumgehung, die bei mir mit SSMS 2012 funktioniert hat. Wenn Sie unter tools => options => environment => international settings die Sprache von "English" in "Same as Microsoft Windows" ändern (werden Sie möglicherweise zum Neustart aufgefordert) SSMS, damit die Änderungen wirksam werden), verwendet UTF-16 nicht mehr als Standardcodierung für neue Dateien. Alle neuen Dateien, die ich erstelle, haben jetzt Codepage 1252 (Datei => Erweiterte Speicheroptionen), ein 8-Bit-Codierungsschema und scheint keine Probleme mit zu haben
Git Diff
quelle
Die Lösung dieses Problems besteht darin, die Datei zur Verwendung der 8-Bit-Codierung zu zwingen. Sie können dieses PowerShell-Skript ausführen, um die Codierung aller SQL-Dateien im aktuellen Verzeichnis und seinen Unterverzeichnissen zu ändern.
quelle
[System.IO.File]::WriteAllLines($MyPath, $MyFile, $Utf8NoBomEncoding)