Um git diff realmente útil de suas mudanças não comprometidas

TL; DR

git diff -w --patience

Então você acabou de fazer um monte de mudanças em um projeto git, bom trabalho. Agora você deseja revisar suas alterações antes de se comprometer, ainda melhor. (Eu gosto de onde você quer chegar com isso, continue.) Então você faz o que costuma fazer: git diffmas, desta vez, o arquivo inteiro aparece de forma diferente .

Por que o diff diz que o arquivo inteiro mudou? Alguns motivos podem ser:

  1. Alterações de espaço em branco (guiasvs. espaços , recuo, etc.)
  2. O conteúdo do arquivo foi movido de uma maneira estranha (reorganizando blocos de código, etc.)

Então, acho que é justificativa suficiente para a -wbandeira que ignora os espaços em branco.

Ok, ótimo, agora o diff é um pouco menos estranho. Mas meu (s) arquivo (s) extremamente modificado (s) ainda tem uma diferença confusa … Podemos fazer melhor! Apenas seja paciente.

Mas, que diabos é essa --patiencebandeira? Para encurtar a história, a paciência é um algoritmo de diferenciação diferente (leia mais sobre ele no StackOverflow ). Usar o algoritmo de paciência ao calcular um diff pode ser útil se o arquivo mudou drasticamente, mas de uma maneira incomum. Eu vi isso acontecer quando:

  1. Mesclando ramos muito divergentes
  2. Imediatamente após um refatorador massivo
  3. Alterar os nomes das variáveis ​​e / ou funções de uma forma estranha – geralmente devido a ramificações divergentes

Agora que isso está fora do caminho, revise suas alterações e …

git commit -m "Use git diff -w --patience if you're diffing this"