Ignora as alterações dos espaços em branco em todos os comandos do git

25

Encontrei vários sites que explicam como ter o git avisando quando você está alterando os finais de linha ou outras diversas técnicas para impedir que você estrague um arquivo inteiro. Suponha que seja tarde demais para isso - a árvore já tem commits que alternam os finais de linha dos arquivos, então git diff mostra a subtração do arquivo antigo seguido da adição de um novo arquivo com o mesmo conteúdo

Estou procurando uma opção de configuração do git ou um sinalizador de linha de comando que informe diff para simplesmente ignorá-los - se duas linhas diferirem apenas pelo espaço em branco, finja que elas são iguais. Eu preciso dessa opção / flag de configuração para trabalhar com qualquer coisa que dependa de diferenças de arquivo - diff , blame , even merge / rebase idealmente - Eu quero que git ignore completamente o espaço em branco à direita, particularmente a linha terminações. Como posso fazer isso?

    
por Michael Mrozek 29.03.2011 / 16:59

1 resposta

13

Para diff, há git diff --ignore-space-at-eol , que deve ser bom o suficiente. Para diferenças e culpas, você pode ignorar todas as alterações de espaço em branco com -w : git diff -w , git blame -w .

Para git apply e git rebase , a documentação menciona --ignore-whitespace .

Para a mesclagem, parece que você precisa usar uma ferramenta de mesclagem externa. Você pode usar esse script de wrapper (não testado), em que favorite-mergetool é a sua fusão favorita ferramenta ; execute git -c mergetool.nocr.cmd=/path/to/wrapper/script merge . O resultado da mesclagem será no formato unix; se preferir outro formato, converta tudo para esse formato diferente ou converta $MERGED após a mesclagem.

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

Para minimizar problemas com finais de linha mistos, certifique-se de que os arquivos de texto sejam declarados como tal .

Veja também É possível para git - Ignorar diferenças de fim de linha? no estouro de pilha.

    
por 29.03.2011 / 21:36