Fusione senza conflitti di spazi bianchi


179

Ho un problema in cui ho un grande commit che cambia circa mille righe di codice, rimuovendo gli spazi bianchi dalla fine delle righe e rimuovendo gli spazi prima delle schede.

Ci sono anche circa 50 richieste pull per questo progetto, che avranno tutti dei conflitti quando il mio commit verrà unito. Esiste un modo in cui git può essere impostato in modo tale che quando si fondono commit futuri, ignori i conflitti in cui uno di questi è solo un cambiamento di spazio?

Modificare git da solo o usare uno strumento di terze parti non è possibile, ma usare un hook va bene.


Possibile duplicato di guai di spazi bianchi git
Cees Timmerman,

Risposte:


246
 git merge -Xignore-all-space

O (più preciso)

 git merge -Xignore-space-change

dovrebbe essere sufficiente per ignorare tutti i conflitti relativi allo spazio durante l'unione.

Vedi git diff :

--ignore-space-change

Ignora i cambiamenti nella quantità di spazio bianco.
Ciò ignora gli spazi bianchi alla fine della linea e considera equivalenti tutte le altre sequenze di uno o più caratteri degli spazi bianchi.

--ignore-all-space

Ignora gli spazi bianchi quando si confrontano le linee.
Questo ignora le differenze anche se una riga ha spazi bianchi dove l'altra non ne ha.

ks1322 aggiunge nei commenti un buon consiglio:

Vale la pena unire --no-commite rivedere l'unione prima del commit effettivo .


L' OP Callum Macrae riferisce che, in questo caso, l'unione procede senza interruzioni, e gli spazi finali contenuti nei cerotti richiesta di pull vengono applicati ai file locali.
Tuttavia, l'OP utilizza un hook pre-commit che si occupa di detti spazi finali.
(Suppongo che sia un po 'simile a questo , anche qui citato ).


L'hook pre-commit dell'OP è indicato qui :

Oltre a rimuovere gli spazi vuoti finali, rimuove da uno a tre spazi prima delle schede (ho impostato la larghezza della scheda su 4) e aggiunge EOL.
Ho avuto rapporti che il codice che aggiunge l'EOL elimina il file in Windows, ma non è stato in grado di replicarlo.


1
Dai miei test finora, sembra che rimuova tutte le modifiche agli spazi bianchi nel file. Tuttavia, ora sto usando l'hook pre-commit per rimuovere gli spazi vuoti di coda, quindi non è un problema.
callumacrae,

1
@CallumMacrae: ok, e grazie per il feedback. Ancora una volta, ho aggiunto il tuo link nella risposta per una maggiore visibilità.
VonC

1
git merge -Xignore-space-change- beh, posso dire per certo questo non ha funzionato ... . L'unico pezzo di spazio bianco che stavo cercando di rimuovere è rimasto. Git fa assolutamente schifo.
JWW

1
Vale la pena unire --no-commite rivedere l'unione prima del commit effettivo.
ks1322,

1
-Xignore-all-space sembra non fare nulla per gli spazi bianchi e --ignore-space-change non è stato riconosciuto come opzione da git
Preza8
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.