2010-07-30 9 views
17

Ich habe versehentlich einige Leerzeichen in my initial commit setzen - es zeigt sich rot in git diff --color. Was ist der beste Weg, um bestehende Whitespace loszuwerden und wie kann ich vermeiden, dass dies wieder passiert?Git - Trim Whitespace

Ich bin nicht unbedingt auf der Suche nach einem integrierten git Befehl. Jedes externe Programm, das unter Ubuntu kostenlos zur Verfügung steht, wäre ebenfalls willkommen.

+0

genial Ich wusste nicht, Git hatte diese Funktion. – xenoterracide

+1

Siehe [diese Frage] (http://stackoverflow.com/q/591923/470844). – ntc2

Antwort

24

trimmen Leerzeichen im aktuellen Verzeichnis für alle Dateien Hinter, zu verwenden:

sed -i 's/[[:space:]]*$//' * 

über zukünftigen Leerzeichen Fehler zu warnen (beide Leerzeichen und Leerzeichen vor Tabs) und Leerzeichen Fehler zu beheben in Patches, fügen Sie den folgenden Code in Ihre gitconfig Datei:

[core] 
    whitespace = trailing-space,space-before-tab 
[apply] 
    whitespace = fix 
+0

das ist gut für den Schutz vor Leerzeichen commits aber das OP fragte nach Entfernen von Leerzeichen, die sie bereits commited – stevejpurves

+0

@stevejpurves: Die oberste Zeile erläutert, wie nachgestellte Leerzeichen mit * sed * entfernen. Soweit ich weiß, gibt es keinen Git-Befehl, der das Gleiche tut. – Zaz

12

core.whitespace weist git Flag bestimmte Leerzeichen Probleme:

  • trailing-space über Leerzeichen am Ende einer Zeile warnt oder am Ende einer Datei
  • space-before-tab warnt, wenn ein Raum vor einem Tab verwendet für die Einrückung

apply.whitespace wird verwendet, wenn ein Patch angewendet wird. Es prüft auf Leerraumfehler (die oben aufgeführten in core.whitespace) und wendet den Patch nach dem Versuch an, sie zu beheben (d. H., Sie zu entfernen).

gehen Diese Optionen in ~/.gitconfig - das heißt, eine .gitconfig Datei im Stammverzeichnis Ihres Home-Verzeichnis des Benutzers (in der Regel /home/user/.gitconfig auf Linux, /Users/user/.gitconfig auf Mac OS X, und ich weiß nicht, wo auf Windows, aber ich irgendwo annehmen in C:\Documents and Settings\user).

+0

Das erklärt die Whitespace-Einstellungen (+1 dafür), beantwortet aber nicht die Frage "Wie lösche ich vorhandene Whitespaces?". Ich habe den ursprünglichen Beitrag zur besseren Übersicht aktualisiert. – Zaz

0

Und um die weißen Räume von allen Dateien rekursiv aus allen Unterverzeichnissen zu trimmen, kann dies verwendet werden.

finden ./* -type f -exec sed -i 's/[[: space:]] * $ //' {} \;