2014-12-01 7 views
6

Ich möchte git diff nicht BOM Veränderungen zeigen.
Solche Veränderungen zeigen typischerweise als <feff> im diff up:Git ignorieren BOM (git diff verhindern, zeigt Zeichen Änderungen Byte-Reihenfolge)

-<feff>/*^M 
+/*^M 

Wie ich git diff machen kann auf diese Weise zu verhalten?
Vorzugsweise mit einem Befehlszeilenparameter.

git --ignore-all-space (aka git -w) macht nicht den Trick. Ich bin auf Mac OS X, wenn das wichtig ist.

+0

Würde 'git diff -w' (' --ignore-all-space') besser funktionieren? – VonC

+0

@VonC: Es tut leider nicht den Trick. –

+0

Ok. Dann weiß ich es nicht. Git scheint BOM nicht zu berühren oder zu ignorieren (wie in http://stackoverflow.com/a/6418611/6309 gesehen) – VonC

Antwort

2

Verwenden Git Attribute Filter

Eine mögliche Lösung wäre, eine BOM-Filter zu erstellen, wie:

#!/bin/bash 
sed '1s/^\xEF\xBB\xBF//' "$1" 

store es irgendwo in Ihrem Pfad (wie heißt removebom) und ausführbar machen.

Dann müssen Sie den Filter in Git konfigurieren, indem ausgeführt wird:

$ git config diff.removebom.textconv removebom 

und Hinzufügen eines Attributs für Dateien, die Sie interessieren sich für (dh CPP) sind zu Ihrem Repository:

*.cpp diff=removebom 

als .gitattributes Datei.

Oder nehmen Sie die BOM ein für alle Mal

... weil hoffentlich:

Mehr zum Thema finden Sie unter Die Stückliste kann in Ihrem Projekt ein für allemal entfernt werden :)

+0

Ich sehe, dass Sie möglicherweise eine UTF-16 BOM verwenden, dann "1s/^ \ xFE \ xFF // ''könnte das gewünschte sed-Muster sein ... Aber im Fall von UTF-16 ist die Stückliste möglicherweise erforderlich und Sie konvertieren die gesamte Datei in UTF-8; hüte dich nur davor. – petrpulc