2010-07-30 23 views
17

Przypadkowo umieściłem jakiś spację w my initial commit - pojawia się czerwony znak git diff --color. Jaki jest najlepszy sposób na pozbycie się istniejących białych znaków i jak mogę uniknąć tego ponownie?git - przycinanie białych znaków

Niekoniecznie szukam wbudowanego polecenia git. Każdy program zewnętrzny dostępny za darmo w Ubuntu również byłby mile widziany.

+0

Niesamowite Nie wiedziałem, że Git ma tę funkcję. – xenoterracide

+1

Zobacz [to pytanie] (http://stackoverflow.com/q/591923/470844). – ntc2

Odpowiedz

24

Aby przyciąć końcowe białe znaki na wszystkich plików w bieżącym katalogu, zastosowanie:

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

Aby ostrzec o przyszłych błędów białych (oba końcowe spacje i spacji przed kartami), i naprawić błędy whitespace w plastry, dodać następujący kod do pliku gitconfig:

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

to jest dobre dla ochrony przed białymi znakami, ale OP zapytał o usunięcie białych znaków, które już popełniono. – stevejpurves

+0

@stevejpurves: Górna linia wyjaśnia, jak usunąć końcowe białe znaki za pomocą * sed *. O ile mi wiadomo, nie ma polecenia git, które robi to samo. – Zaz

12

core.whitespace instruuje git do flag pewnych problemów białych:

  • trailing-space ostrzega o spacji na końcu linii lub na końcu pliku
  • space-before-tab ostrzega, gdy istnieje przestrzeń przed karcie używany do wcięcia:

służy do nakładania łaty. Sprawdza błędy białych znaków (te wymienione powyżej, w core.whitespace) i stosuje poprawkę po próbie naprawienia ich (tj. Usunięcia).

Te opcje iść w ~/.gitconfig - czyli plik .gitconfig u podstaw swojego katalogu domowego użytkownika (zazwyczaj /home/user/.gitconfig na Linuksie, /Users/user/.gitconfig na Mac OS X, a ja nie wiem, gdzie w systemie Windows, ale przypuszczam, że gdzieś w C:\Documents and Settings\user).

+0

To wyjaśnia ustawienia białych znaków (+1 za to), ale nie odpowiada na pytanie "Jak pozbyć się istniejących odstępów?". Zaktualizowałem oryginalny post dla jasności. – Zaz

0

I do przycinania białych spacji ze wszystkich plików rekursywnie ze wszystkich podkatalogów można tego użyć.

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

Powiązane problemy