Como posso obter o melhor retorno possível com o comando "diff"?

9

Eu tentei usar o diffcomando linux no passado sem muita sorte ou paciência. Normalmente, acabo usando um utilitário de interface gráfica como o DiffMerge ou o Kdiff.

Recentemente, comecei a tentar usar diffnovamente para comparar arquivos em sistemas remotos via ssh, e achei a -y / --side-by-sideopção muito útil, mas ainda sinto que não estou aproveitando ao máximo este utilitário.

Então, estou curioso para saber como realizar as seguintes coisas:

  1. Destaque as alterações ou use o código de cores para tornar a saída mais legível
  2. Mesclar - selecione linhas com diferenças e efetue as alterações em um dos arquivos

Além disso, não encontrei muitos bons exemplos ao pesquisar no Google, por isso, se você tem alguns segredos do linux-fu para tirar o máximo proveito do diff, você poderia compartilhar? Compararei principalmente arquivos de configuração baseados em texto, mas todos os truques e dicas seriam maravilhosos.

Para referência - O utilitário DiffMerge mostra facilmente as alterações lado a lado com o realce das cores. Os ícones na parte superior permitem alternar entre as visualizações de "mostrar tudo", "mostrar diferenças" e "mostrar diferenças com o contexto". Adoraria algumas dessas funcionalidades no prompt de comando.

ps: Devo também observar que outra opção que acho bastante útil é sobre a --suppress-common-linesqual aprendi neste post conciso e legível do blog .

cwd
fonte
3
Eu uso o vimdiff um pouco.
Nicerobot 23/11
@ nicerobot Você pode postar isso como uma resposta - é uma ferramenta muito útil e útil.
rozcietrzewiacz
Você não pode, é grátis ..... Desculpe Não foi possível: D
whoami
Eu faço a maioria das minhas diferenças no Emacs.
Gilles 'SO- stop be evil' (
@whoami - o que?
Cwd

Respostas:

9

Em nenhuma sequência específica:

  • meld é um programa diff muito bom, que faz diffs muito agradáveis ​​e combinações de três vias.
  • git config --global merge.conflictstyle diff3fornece saída de mesclagem de três vias para uso com ferramentas como meld.
  • wdifffaz word diffs, muito bom se colorido :wdiff -w "$(tput bold;tput setaf 1)" -x "$(tput sgr0)" -y "$(tput bold;tput setaf 2)" -z "$(tput sgr0)" ...
  • Para minimizar a sujeira na diffsaída, eu normalmente uso a opção --ignore-all-space( -w)
  • diff-ignore-moved-lines* faz o que diz no rótulo.
  • difff* pode ser usado para diferenciar apenas as linhas que correspondem em determinados campos.

* Isenção de responsabilidade: sou o autor e os desenvolvi para ajudar na difusão e fusão de CLI e GUI.

l0b0
fonte
11
Eu também uso diffusebastante.
Arcege
diff -u também é bastante direto, eu acho.
Gabe.
5

Eu achei vimdiffmuito útil.

nicerobot
fonte
3

Para obter cores no diff, você deve consultar http://colordiff.sourceforge.net/ . Este é apenas um invólucro em torno do diff e, como tal, todas as opções de comando ainda funcionam.

Caso você tenha o ubuntu, basta escrever:

    # sudo apt-get install colordiff

Correndo o risco de não atender ao seu caso de uso, gité um VCS muito bom que se integra bem a muitas ferramentas de difusão e mesclagem (tanto na linha de comando quanto na GUI). Experimente se for uma opção.

Alexandre Martins
fonte
1

Tentar sdiff

difftambém possui opções ( -eou -ed) para criar um script de mesclagem para uso comed

sdiff, diffe eddeve fazer parte do seu shell onde quer que você vá.

Seu software de controle de versão provavelmente também possui uma ferramenta diffe mergeincorporada.

adam f
fonte