2010-07-30 13 views
17

Ho inserito accidentalmente alcuni spazi in my initial commit - si presenta in rosso in git diff --color. Qual è il modo migliore per sbarazzarsi degli spazi bianchi esistenti e come posso evitare che ciò accada di nuovo?git-trim spazio vuoto

Non sono necessariamente alla ricerca di un comando integrato git. Sarebbe inoltre gradito qualsiasi programma esterno disponibile gratuitamente su Ubuntu.

+0

fantastico non sapevo che git avesse questa caratteristica. – xenoterracide

+1

Vedere [questa domanda] (http://stackoverflow.com/q/591923/470844). – ntc2

risposta

24

Per tagliare gli spazi finali su tutti i file nella directory corrente, uso:

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

per mettere in guardia sui futuri errori di spazio bianco (entrambi spazi finali e spazi prima linguette), e per correggere gli errori di spazio bianco a chiazze, aggiungere il seguente codice al file gitconfig:

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

questo è buono per la protezione da commit di spazi bianchi ma l'OP ha chiesto di rimuovere gli spazi bianchi che sono già impegnati – stevejpurves

+0

@stevejpurves: La riga in alto spiega come rimuovere lo spazio vuoto finale usando * sed *. Per quanto ne so, non esiste un comando git che faccia la stessa cosa. – Zaz

12

core.whitespace istruisce git a bandiera alcuni problemi di spazio bianco:

  • trailing-space mette in guardia circa gli spazi alla fine di una riga o alla fine di un file
  • space-before-tab avverte quando c'è uno spazio prima di una scheda utilizzata per indentazione

apply.whitespace viene utilizzato quando si applica una patch. Controlla gli errori di spazi bianchi (quelli elencati sopra, in core.whitespace) e applica la patch dopo aver tentato di risolverli (ad esempio, rimuoverli).

Queste opzioni vanno in ~/.gitconfig - che è, un file .gitconfig alla radice della directory del vostro utente domestico (in genere /home/user/.gitconfig su Linux, /Users/user/.gitconfig su Mac OS X, e io non so dove su Windows ma suppongo da qualche parte in C:\Documents and Settings\user).

+0

Questo spiega le impostazioni dello spazio bianco (+1 per quello) ma non risponde alla domanda "Come faccio a sbarazzarmi degli spazi bianchi esistenti?". Ho aggiornato il post originale per chiarezza. – Zaz

0

E per tagliare gli spazi bianchi da tutti i file in modo ricorsivo da tutte le sottodirectory può essere utilizzato.

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

Problemi correlati