Git diff -w ignora gli spazi bianchi solo all'inizio e alla fine delle righe


367

Mi piace usare git diff -wper ignorare le differenze di spazio. Ma ho appena notato che ignora anche le differenze di spazio bianco nel mezzo delle linee. Come potrei ignorare solo le differenze di spazio bianco che arrivano all'inizio (^) o alla fine ($) delle righe?


31
Considerato di utilizzare git diff -binvece?
Jonas Byström,

5
"-b --ignore-space-change Ignora i cambiamenti nella quantità di spazi bianchi. Questo ignora gli spazi bianchi alla fine della linea e considera equivalenti tutte le altre sequenze di uno o più caratteri di spazi bianchi."
mowwwalker,

Risposte:


451

Per l'uso di fine linea:

git diff --ignore-space-at-eol

Invece di quello che stai usando attualmente:

git diff -w (--ignore-all-space)

Per l'inizio della linea ... sei sfortunato se vuoi una soluzione integrata.

Tuttavia, se non ti dispiace sporcarti le mani, c'è una patch piuttosto vecchia che galleggia da qualche parte che aggiunge il supporto per "--ignore-space-at-sol".


Grazie, ma non funziona se hai configurato il diff su uno strumento esterno ... qualche idea?
adardesign,

@adardesign, penso che probabilmente dovrebbe essere configurato nello strumento esterno. Non sono sicuro che ci sia qualcosa che Git può fare per presentare il diff senza cambiamenti di spazio ... potrebbe essere sbagliato però; git è piuttosto potente ...
johnny,

Sarebbe bello averlo configurato di default. Intendo -w oppure -b o --ignore-all-space. C'è una discussione al riguardo su stackoverflow.com/questions/7310033/…
Artyom,

8
Sono d'accordo con il suggerimento -b, poiché -w considera "abc def" e "abcdef" come gli stessi, che raramente è quello che voglio!
Richard Wiseman,

3

Questa è una vecchia domanda, ma è ancora regolarmente visualizzata / necessaria. Vorrei postare per avvisare i lettori come me che gli spazi bianchi, come menzionato nella domanda del PO, non sono gli stessi della definizione di Regex, per includere nuove righe, tabulazioni e caratteri spaziali - Git ti chiede di essere esplicito. Vedi alcune opzioni qui: https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration

Come detto, git diff -bo git diff --ignore-space-changeignorerà gli spazi alle estremità della linea. Se desideri che l'impostazione sia il comportamento predefinito, la seguente riga aggiunge tale intento al tuo file .gitconfig, quindi ignorerà sempre lo spazio alla fine della riga:

git config --global core.whitespace trailing-space

Nel mio caso, ho trovato questa domanda perché ero interessato a ignorare le "differenze di spazi bianchi di ritorno a capo", quindi avevo bisogno di questo:

git diff --ignore-cr-at-eolo git config --global core.whitespace cr-at-eolda qui .

È inoltre possibile renderlo predefinito solo per quel repository omettendo il parametro --global e controllando il file delle impostazioni per quel repository. Per il problema CR che ho riscontrato, scompare dopo il check-in se warncrlf o autocrlf = true nella sezione [core] del file .gitconfig.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.