git diff – mostrami le modifiche finali alla linea?

Il mio editor sta modificando le terminazioni di riga dei miei file sorgente. Quando faccio git diff , vedo la stessa riga due volte – una volta con - e una volta con + – senza differenze visibili.

Come faccio a ottenere git diff per mostrarmi che cosa fosse in realtà questo cambiamento?

Innanzitutto, assicurati di utilizzare l’output colorato (ad esempio con git diff --color ) e di aver triggersto l’evidenziazione degli spazi bianchi con (ad esempio)

 git config color.diff.whitespace "red reverse" 

Ciò potrebbe non funzionare in tutti i casi, tuttavia, poiché git non sembra evidenziare spazi bianchi finali per le linee rimosse . Per vedere gli spazi bianchi che hai cancellato, usa semplicemente

 git diff -R 

per mettere lo spazio bianco sul lato ‘aggiunto’ del confronto, dove viene evidenziato.

Per ulteriori dettagli, vedere le risposte a questa domanda SO .

Puoi vedere la differenza di fine linea con il seguente comando.

 git diff | cat -v 

Quindi “^ M” viene stampato per la fine di CRLF (DOS), nulla per la fine di LF (Unix).

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.

Un modo per vedere i cambiamenti dello spazio bianco è quello di eseguire una “differenza di parole” carattere per carattere con

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

Questo evidenzia tutti i cambiamenti dello spazio bianco in tutte le linee . Gli spazi bianchi rimossi sono racchiusi tra [- e -] e gli spazi bianchi aggiunti in {+ e +} .

In alternativa, come suggerito da Alex

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

evidenzia tutti i cambiamenti di spazi bianchi alle estremità delle linee .

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

evidenzia lo spazio bianco diff in linee modificate.

Uno strumento diff grafico ti mostrerà la modifica migliore – prova a git difftool .

Usa la combinazione e imposta le preferenze per mostrare gli spazi bianchi. (Modifica -> Preferenze -> Mostra spazio bianco.)

Altri strumenti grafici probabilmente hanno opzioni simili – la risposta @ + commento di Cotton ti dice come farlo con vimdiff.