2010-10-13 13 views
46

Il mio editor sta modificando le terminazioni di riga dei miei file sorgente. Quando faccio git diff, vedo la stessa linea due volte - una volta con - e una volta con + - senza alcuna differenza visibile.git diff - mostrami le modifiche finali alla linea?

Come faccio a ottenere git diff per mostrarmi cosa fosse effettivamente questo cambiamento?

risposta

5

Uno strumento di diffusione grafica ti mostrerà meglio la modifica - prova git difftool.

Utilizzare meld e impostare le preferenze per mostrare gli spazi. (Modifica -> Preferenze -> Mostra spazio bianco.)

Altri strumenti grafici probabilmente hanno opzioni simili - @ Risposta di Cotton + commento ti dice come farlo con vimdiff.

+0

Uno strumento di diffusione grafica potrebbe non essere disponibile.La risposta di @ paul-whittaker funzionerà nel contesto implicito dalla domanda (alcuni terminali). – beOn

44

In primo luogo, assicurarsi che si sta utilizzando l'uscita di colore (ad esempio con git diff --color) e che hai attivato l'evidenziazione spazi bianchi con (ad esempio)

git config color.diff.whitespace "red reverse" 

Questo potrebbe non funzionare in tutti i casi, tuttavia, come git non sembra evidenziare spazi bianchi finali per righe rimosse. Per vedere gli spazi che hai eliminato, è sufficiente utilizzare

git diff -R 

di mettere gli spazi sul lato 'aggiunto' del confronto, in cui lo fa arrivare evidenziato.

Per ulteriori dettagli, vedere le risposte allo this SO question.

+0

Questa è la risposta vera, anche se devo ammettere che è divertente vedere lo spazio rosso sulla nuova riga. Grazie! – zeh

5
git diff --ws-error-highlight=new,old 

evidenzia spazi bianchi diff in linee modificate.

6

Un modo di vedere le modifiche degli spazi bianchi è quello di fare un personaggio per carattere "parola diff" con

git diff --color --word-diff-regex=. 

Questo mette in evidenza tutti gli spazi cambia ovunque nelle linee. Gli spazi bianchi rimossi sono racchiusi tra [- e -] e gli spazi aggiunti in {+ e +}.

alternativa, come suggested by Alex

git diff --color --ws-error-highlight=new,old 

evidenzia tutti i cambiamenti spazi posti estremità delle linee.

7

È possibile visualizzare la differenza di fine riga con il seguente comando.

git diff | cat -v 

Poi "^ M" viene stampato per CRLF (DOS) finale, nulla per LF (Unix) fine.

Apparentemente git diff sta facendo la cosa giusta, stampando caratteri CR e LF per il finale CRLF. Ma poiché CR viene consumato dalla console, non possiamo vederlo. Usando cat -v, possiamo renderlo visibile.