Wie kann ich Git dazu bringen, Änderungen an meinen .sql-Dateien anzuzeigen?

Lesezeit: 4 Minuten

Benutzer-Avatar
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

Benutzer-Avatar
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

  1. Wählen Sie in Visual Studio oder SSMS Speichern unter aus
  2. Wählen Sie den Dropdown-Pfeil neben der Schaltfläche „Speichern“.
    Geben Sie hier die Bildbeschreibung ein
  3. Wählen Sie “Mit Kodierung speichern…”
  4. Wählen Sie im Dialogfeld „Speichern unter bestätigen“ die Option „Ja“.

Geben Sie hier die Bildbeschreibung ein

  1. 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.

Geben Sie hier die Bildbeschreibung ein

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:

  1. Laden Sie hier das von Microsoft MCC, MVP Stefan Roth erstellte Powershell-Skript herunter Verknüpfung
  2. 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.
  3. 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

Benutzer-Avatar
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.

Benutzer-Avatar
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.

1187670cookie-checkWie kann ich Git dazu bringen, Änderungen an meinen .sql-Dateien anzuzeigen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy