Wie kann ich Git dazu bringen, Änderungen an meinen .sql-Dateien anzuzeigen?
Lesezeit: 4 Minuten
Samantha JT-Star
Ich habe versucht, dies zu den .gitattributes hinzuzufügen:
* text=auto
*.sql diff
Aber es wird immer noch so angezeigt:
BIN WebRole/Sql/Objects/dbo.Content.Table.sql →
WebRole/Sql/dbo.Content.Table.sql Binary file not shown
Wäre dankbar für Hilfe dabei.
Haben Sie tatsächlich ein großes „A“ in der Schreibweise Ihrer .gitAttributes-Datei? Dies könnte bei einem Dateisystem, bei dem die Groß-/Kleinschreibung beachtet wird, einen Unterschied machen. Git schreibt diesen Dateinamen normalerweise „.gitattributes“.
– Wolf
21. Juli 2015 um 14:20 Uhr
Ich denke, du meinst Git, nicht GitHub, richtig?
– bitoiu
21. Juli 2015 um 16:17 Uhr
Ich verwende Git, aber es ist der GitHub-Bildschirm, der mir die obige Meldung anzeigt.
– Samantha JT Star
21. Juli 2015 um 17:46 Uhr
Bitte versuchen Sie es hinzuzufügen *.sql text in deiner .gitattributes Datei.
– Hong
29. Juli 2015 um 4:54 Uhr
mrdunkel1
Die einzige Methode, die funktioniert hat, bestand darin, die Codierung von .sql-Dateien von der Standard-UTF16-Codierung auf UTF8 zu ändern. Im Folgenden werden drei Ansätze basierend auf Ihren Umständen skizziert:
Für eine kleine Anzahl von Dateien
Wählen Sie in Visual Studio oder SSMS Speichern unter aus
Wählen Sie den Dropdown-Pfeil neben der Schaltfläche „Speichern“.
Wählen Sie “Mit Kodierung speichern…”
Wählen Sie im Dialogfeld „Speichern unter bestätigen“ die Option „Ja“.
Wählen Sie Unicode (UTF-8 mit Signatur) – CodePage 65001 aus dem daraufhin angezeigten Dialogfeld und drücken Sie OK. Beachten Sie, dass die Option UTF-8 normalerweise über der aktuell ausgewählten Codierung (Unicode – Codepage 1200) steht.
Für eine große Anzahl von Dateien
Wenn Sie viele Dateien ändern müssen und mit der Ausführung von Powershell-Skripten vertraut sind, sollten Sie Folgendes versuchen:
Laden Sie hier das von Microsoft MCC, MVP Stefan Roth erstellte Powershell-Skript herunter Verknüpfung
Das Powershell-Skript ist nicht digital signiert, daher müssen Sie Powershell als Administrator öffnen und dann Ihre (vorübergehend) beschriebene Ausführungsrichtlinie herabstufen hier. Wählen Sie entweder die Bypass- oder uneingeschränkte Richtlinie.
Wie man Powershell-Skripte ausführt, wird hier beschrieben. Der Pfad zum Skript muss in Anführungszeichen gesetzt werden. Das Skript benötigt dann Quell- und Zielordner, die nicht in Anführungszeichen gesetzt werden dürfen. Die angeforderte Codierung ist einfach utf8.
Für alle zukünftig erstellten Dateien
Um künftig keine Dateikonvertierung mehr durchführen zu müssen, können Sie die Vorlage für die neu in SSMS erstellten Abfragen mit der hier beschriebenen Vorgehensweise ändern Verknüpfung
+1 für dieses Bit “Beachten Sie, dass die UTF-8-Option normalerweise über der aktuell ausgewählten Codierung steht” – Ich hasse es, wenn “am häufigsten vorkommende” Elemente nicht auch in ihrer alphabetischen Platzierung platziert werden
– Rot
8. Juni 2021 um 15:33 Uhr
Git errät normalerweise richtig, ob ein Blob Text oder Binärdaten enthält, indem es den Anfang des Inhalts untersucht. In Ihrem Fall wird git jedoch verwirrt und behandelt die Datei als binär, möglicherweise aufgrund von Binärdaten irgendwo in der Datei.
Aus der git-diff-Manpage:
-a, --text
Treat all files as text.
Sie können den Textunterschied also immer noch ganz einfach wie folgt erhalten:
git diff -a WebRole/Sql/Objects/dbo.Content.Table.sql
Um die falsche Git-Vermutung zu überschreiben, fügen Sie Folgendes zu .gitattributes im selben Verzeichnis wie die Datei hinzu:
*.sql-Unterschied
und übertrage diese Datei. Dies zwingt Git, von nun an jede .sql-Datei als Text zu behandeln, unabhängig davon, ob sie Binärdaten enthält oder nicht.
Dies ist nur eine Teilantwort. Siehe auch die Antworten unten, um die Datei als UTF-8-Codierung zu speichern.
– Mike
16. August 2019 um 2:43 Uhr
VonC
GitHub kann sehr gut entscheiden, wie es sein Diff verwaltet (zum Beispiel haben sie benutzerdefinierte Diffs für 3D-Renderings, Karten oder Bilder).
GitHub-Unterstützung kann dir genau sagen wie .sql Dateien werden behandelt und unterschieden.
Überprüfen Sie aber auch die Codierung Ihrer SQL-Dateien in Ihrem GitHub-Repo.
Wie ich in „Warum denkt Git, dass meine cs-Datei binär ist?“ erwähnt haben, könnten UTF-16-Dateien problematisch sein.
Stellen Sie sicher, dass zumindest die SQL-Dateien in UTF-8 vorliegen.
Loic
Es sieht nach einem Problem mit der Dateicodierung aus. Welche Codierung verwenden Sie?
vgl. folgende SO-Fragen: Warum behandelt Git diese Textdatei als Binärdatei? und Kann ich git dazu bringen, eine UTF-16-Datei als Text zu erkennen?.
Sie können Ihren lokalen Git zwingen, Textunterschiede für die Datei zuzulassen, aber nicht für GitHub.
Überprüfen Sie Ihre Codierung und ersetzen Sie Ihre Datei durch UTF-8, um die Situation zu beheben.
11876700cookie-checkWie kann ich Git dazu bringen, Änderungen an meinen .sql-Dateien anzuzeigen?yes
Haben Sie tatsächlich ein großes „A“ in der Schreibweise Ihrer .gitAttributes-Datei? Dies könnte bei einem Dateisystem, bei dem die Groß-/Kleinschreibung beachtet wird, einen Unterschied machen. Git schreibt diesen Dateinamen normalerweise „.gitattributes“.
– Wolf
21. Juli 2015 um 14:20 Uhr
Ich denke, du meinst Git, nicht GitHub, richtig?
– bitoiu
21. Juli 2015 um 16:17 Uhr
Ich verwende Git, aber es ist der GitHub-Bildschirm, der mir die obige Meldung anzeigt.
– Samantha JT Star
21. Juli 2015 um 17:46 Uhr
Bitte versuchen Sie es hinzuzufügen
*.sql text
in deiner.gitattributes
Datei.– Hong
29. Juli 2015 um 4:54 Uhr