Git diff -w ignora o espaço em branco somente no início e no final das linhas

367

Gosto de usar git diff -wpara ignorar as diferenças de espaço em branco. Mas acabei de notar que ele ignora até mesmo as diferenças de espaço em branco no meio das linhas. Como eu poderia ignorar apenas as diferenças de espaço em branco que aparecem no início (^) ou no final ($) das linhas?

ma11hew28
fonte
31
Considerado usar em git diff -bvez disso?
Jonas Byström
5
"-b --ignore-space-change Ignora alterações na quantidade de espaço em branco. Isso ignora o espaço em branco no final da linha e considera todas as outras seqüências de um ou mais caracteres de espaço em branco equivalentes."
Mowwwalker

Respostas:

451

Para uso no final da linha:

git diff --ignore-space-at-eol

Em vez do que você está usando atualmente:

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

Para o início da linha ... você não terá sorte se quiser uma solução integrada.

No entanto, se você não se importa de sujar as mãos, há um patch bastante antigo flutuando por aí em algum lugar que adiciona suporte para "--ignore-space-at-sol".

Código Falso Macaco Rashid
fonte
Obrigado, mas não funcionará se você configurou o diff para uma ferramenta externa .. alguma idéia?
Adardesign
@ adardesign, acho que provavelmente teria que ser configurado na ferramenta externa. Não tenho certeza se há algo que o git possa fazer para apresentar o diff sem alterações de espaço em branco ... pode estar errado; git é muito poderoso ...
johnny
Seria bom tê-lo configurado por padrão. Quero dizer -w ou -b ou --ignore-all-space. Há uma discussão sobre isso em stackoverflow.com/questions/7310033/…
Artyom
8
Concordo com a sugestão -b, já que -w trata "abc def" e "abcdef" como o mesmo, o que raramente é o que eu quero!
Richard Wiseman
3

Esta é uma pergunta antiga, mas ainda é vista / necessária regularmente. Quero postar para alertar leitores como eu que o espaço em branco mencionado na pergunta do OP não é o mesmo que a definição da Regex, para incluir novas linhas, guias e caracteres de espaço - o Git pede que você seja explícito. Veja algumas opções aqui: https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration

Conforme indicado, git diff -bou git diff --ignore-space-changeignorará os espaços nas extremidades da linha. Se você deseja que essa configuração seja seu comportamento padrão, a linha a seguir adiciona essa intenção ao seu arquivo .gitconfig, portanto sempre ignorará o espaço no final da linha:

git config --global core.whitespace trailing-space

No meu caso, encontrei essa pergunta porque estava interessado em ignorar "diferenças de espaço em branco de retorno de carro", então precisava disso:

git diff --ignore-cr-at-eolou git config --global core.whitespace cr-at-eola partir de aqui .

Você também pode torná-lo o padrão apenas para esse repositório , omitindo o parâmetro --global e verificando o arquivo de configurações para esse repositório. Para o problema de CR que enfrentei, ele desaparece após o check-in se warncrlf ou autocrlf = true na seção [core] do arquivo .gitconfig.

desassossegado
fonte