Ignora le modifiche agli spazi bianchi in tutti i comandi git


26

Ho trovato tonnellate di siti che spiegano come farti avvisare da Git quando stai cambiando i finali di linea o altre tecniche varie per impedirti di rovinare un intero file. Supponiamo che sia troppo tardi: l'albero ha già dei commit che commutano le terminazioni di riga dei file, quindi git diffmostra la sottrazione del vecchio file seguita dall'aggiunta di un nuovo file con lo stesso contenuto

Sto cercando un'opzione di configurazione git o un flag da riga di comando che dice diffdi ignorarli - se due righe differiscono solo per gli spazi bianchi, fingi che siano uguali. Ho bisogno di questa opzione di configurazione / bandiera per il lavoro per tutto ciò che si basa su differenze di file - diff, blameanche merge/ rebaseidealmente - voglio gitignorare completamente spazio bianco in coda, in particolare i fine riga. Come lo posso fare?

Risposte:


14

Per diff, c'è git diff --ignore-space-at-eol, che dovrebbe essere abbastanza buono. Per diff e biasimo, puoi ignorare tutte le modifiche agli spazi bianchi con -w: git diff -w, git blame -w.

Per git applye git rebase, la documentazione menziona --ignore-whitespace.

Per unire, sembra che sia necessario utilizzare uno strumento di unione esterno. Puoi usare questo script wrapper (non testato), dove si favorite-mergetooltrova il tuo strumento di unione preferito ; corri git -c mergetool.nocr.cmd=/path/to/wrapper/script merge. Il risultato della fusione sarà in formato unix; se preferisci un altro formato, converti tutto in quel formato diverso o converti $MERGEDdopo l'unione.

#!/bin/sh
set -e
TEMP=$(mktemp)
tr -d '\013' <"$BASE" >"$TEMP"
mv -f "$TEMP" "$BASE"
TEMP=$(mktemp)
tr -d '\013' <"$LOCAL" >"$TEMP"
mv -f "$TEMP" "$LOCAL"
TEMP=$(mktemp)
tr -d '\013' <"$REMOTE" >"$TEMP"
mv -f "$TEMP" "$REMOTE"
favorite-mergetool "$@"

Per ridurre al minimo i problemi con terminazioni di riga miste, assicurarsi che i file di testo vengano dichiarati come tali .

Vedi anche È possibile che git-merge ignori le differenze di fine riga? su Stack Overflow.


Esiste una configurazione per usare sempre il flag -w con git blame?
Thayne, l'

@Thayne Non che io sappia. È possibile definire un alias come bl = blame -wma non è possibile ridefinire il nome dei comandi integrati e non vedo un'opzione di configurazione per renderlo predefinito. Ma non sono un esperto di git.
Gilles 'SO- smetti di essere malvagio' l'

per git status?
Ejaz,
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.