Qual é a melhor ferramenta de mesclagem visual para o Git?

Qual é a melhor ferramenta para visualizar e editar uma mesclagem no Git? Gostaria de obter uma visualização de mesclagem de 3 vias, com “mine”, “theirs” e “ancestor” em painéis separados e um quarto painel de “saída”.

Além disso, as instruções para invocar a referida ferramenta seriam ótimas. (Eu ainda não descobri como iniciar o kdiff3 de tal maneira que não me dê um erro.)

Meu sistema operacional é o Ubuntu.

Meld é uma ferramenta diff / merge.

Veja como instalá-lo em:

  • Ubuntu
  • Mac
  • Windows : “A versão recomendada do Meld for Windows é a versão mais recente, disponível como um MSI em http://meldmerge.org

Você pode configurar sua própria ferramenta de mesclagem para ser usada com ” git mergetool “.

Exemplo:

  git config --global merge.tool p4merge git config --global mergetool.p4merge.cmd p4merge '$BASE $LOCAL $REMOTE $MERGED' git config --global mergetool.p4merge.trustExitCode false 

E enquanto você está nisso, você também pode configurá-lo como seu difftool para ” git difftool “:

  git config --global diff.tool p4merge git config --global difftool.p4merge.cmd p4merge '$LOCAL $REMOTE' 

Note que no Unix / Linux você não quer que o $BASE seja interpretado como uma variável pelo seu shell – ele deve realmente aparecer em seu arquivo ~ / .gitconfig para que isso funcione.

Beyond Compare 3 , meu favorito, tem uma funcionalidade de mesclagem na edição Pro . A coisa boa com a sua mesclagem é que ele permite que você veja todas as 4 visualizações: base, esquerda, direita e resultado mesclado. É um pouco menos visual do que o P4V, mas muito mais do que o WinDiff. Integra-se com muitos controle de origem e funciona no Windows / Linux. Tem muitos resources como regras avançadas, edições, alinhamento manual …

O Perforce Visual Client ( P4V ) é uma ferramenta gratuita que fornece uma das interfaces mais explícitas para mesclar (veja algumas capturas de canvas ). Funciona em todas as principais plataformas. Minha principal decepção com essa ferramenta é o tipo de interface “somente leitura” . Você não pode editar manualmente os arquivos e não pode alinhar manualmente.

PS: P4Merge está incluído no P4V. O Perforce tenta dificultar um pouco a ferramenta sem o cliente.

O SourceGear Diff / Merge pode ser minha segunda opção de ferramenta gratuita. Verifique se mesclou a captura de canvass e verá que ela tem as três exibições, pelo menos.


O Meld é uma ferramenta gratuita mais recente que eu prefiro usar no SourceGear Diff / Merge : Agora ele também está trabalhando na maioria das plataformas (Windows / Linux / Mac) com a vantagem distinta de suportar nativamente algum controle de origem como o Git . Então você pode ter algum histórico diff em todos os arquivos muito mais simples. A visualização de mesclagem (veja a captura de canvas ) tem apenas 3 painéis, assim como o SourceGear Diff / Merge . Isso torna a fusão um pouco mais difícil em casos complexos.

PS: Se uma ferramenta um dia suporta a fusão de 5 views , isso seria realmente incrível, porque se você escolher commits no Git você realmente não tem uma base, mas duas. Duas bases, duas alterações e uma mesclagem resultante.

Minha ferramenta de mesclagem visual favorita é o SourceGear DiffMerge

  • É de graça.
  • Plataforma cruzada (Windows, OS X e Linux).
  • Limpar a interface visual
  • Todas as funcionalidades do diff que você esperaria (Diff, Merge, Folder Diff).
  • Interface da Linha de comando.
  • Atalhos de teclado utilizáveis.

Interface de usuário

Eu ouço coisas boas sobre o kdiff3.

Você pode tentar o P4Merge .

Visualize as diferenças entre as versões de arquivo com o P4Merge. Resolver conflitos que resultam do desenvolvimento paralelo ou concorrente via codificação de colors.

Os resources incluem:

  • Realçar e editar diferenças de arquivos de texto
  • Escolha include ou ignorar terminações de linha ou espaços em branco
  • Reconhecer as convenções de finalização de linha para Windows (CRLF), Mac (CR) e Unix (LF)
  • Use parâmetros de linha de comando e inicie a partir de aplicativos não-Perforce
  • Exibir números de linha ao comparar e mesclar arquivos
  • Excluir arquivos modificados, exclusivos ou inalterados
  • Filtrar arquivos por nome ou extensão
  • Organize os ativos modificados na hierarquia familiar de arquivos / pastas
  • Comparar JPEG, GIF, TIFF, BMP e outros formatos de arquivo
  • Estenda usando a API do Qt
  • Sobrepor imagens ou exibir lado a lado
  • Destaque as diferenças nas imagens sobrepostas

vimdiff

Uma vez que você tenha aprendido vim (e IMHO você deveria), vimdiff é apenas mais um belo conceito ortogonal para aprender. Para obter ajuda on-line no vim:

 :help vimdiff 

Se você está preso na idade das trevas do uso do mouse, e os arquivos que você está mesclando não são muito grandes, recomendo o mesclar.

Difusa é a minha favorita, mas é claro que sou parcial. 🙂 É muito fácil de usar:

 $ diffuse "mine" "output" "theirs" 

Difusa é uma pequena e simples ferramenta de mesclagem de texto escrita em Python. Com o Diffuse, você pode facilmente mesclar, editar e revisar as alterações no seu código. Difuso é software livre.

Araxis Merge http://www.araxis.com/ Eu estou usando no Mac OS X, mas eu usei no Windows … não é de graça … mas tem alguns resources legais … melhor no Windows Apesar.

Se você está apenas procurando por uma ferramenta diff além de comparação é muito bom: http://www.scootersoftware.com/moreinfo.php

Você pode mudar a ferramenta usada pelo git mergetool passando git mergetool -t= ou --tool= . Para alterar o padrão (do vimdiff) use git config merge.tool .

O IntelliJ IDEA possui uma sofisticada ferramenta de resolução de conflitos de mesclagem com a varinha mágica Resolver, que simplifica muito a mesclagem:

Fonte: https://blog.jetbrains.com/dotnet/2017/03/13/rider-eap-update-version-control-database-editor-improvements/

Você pode instalar a ferramenta ECMerge diff / merge no seu Linux, Mac ou Windows. Ele é pré-configurado no Git, então apenas usar o git mergetool fará o trabalho.

Eu tentei muitas das ferramentas mencionadas aqui e nenhuma delas tem sido exatamente o que eu estou procurando.

Pessoalmente, descobri que o Atom é uma excelente ferramenta para visualizar as diferenças e a resolução / fusão de conflitos.

Quanto à fusão, não há três visualizações, mas todas são combinadas em uma com realce colorido para cada versão. Você pode editar o código diretamente ou existem botões para usar qualquer versão do snippet que você deseja.

Eu nem uso mais como editor ou IDE, apenas para trabalhar com o git. Interface limpa e muito direta, além de altamente personalizável.

  • Você pode iniciá-lo a partir da linha de comando e passar em um único arquivo que você deseja abrir, ou adicionar sua pasta de projeto (git repo).

    • Eu também recomendaria o gerente de projetos como uma maneira muito conveniente de navegar entre projetos sem preencher sua visão de tree.
  • O único problema que tive é refrescante – ao trabalhar com repositorys grandes, o atom pode ser lento para atualizar as alterações feitas fora dele. Eu sempre fecho quando termino e, em seguida, reabrir quando quero ver minhas alterações / commit novamente. Você também pode recarregar a janela com ctrl + shift + f5, o que leva apenas um segundo.

E é claro, claro.

Eu uso ferramentas diferentes para mesclar e comparar:

 git config --global diff.tool diffuse git config --global merge.tool kdiff3 

Punho poderia ser chamado por:

 git difftool [BRANCH] -- [FILE or DIR] 

O segundo é chamado quando você usa o git mergetool .

Se você usa o visual studio , o Team Explorer embutido na ferramenta é uma ótima ferramenta para resolver conflitos de mesclagem do git.

Então, para o git merge, você pode tentar:

  • DiffMerge para comparar visualmente e mesclar arquivos no Windows, OS X e Linux.

    DiffMerge

  • Meld , é uma ferramenta de diferenças e mesclagens visuais.

    Meld é uma ferramenta visual de comparação e mesclagem

  • KDiff3 , um programa diff e merge), que compara ou mescla 2 ou 3 arquivos de input de texto / dirs.
  • opendiff (parte do Xcode Tools no macOS), um utilitário de linha de comando que inicia o aplicativo FileMerge a partir do Terminal para comparar graficamente arquivos ou diretórios, incluindo a mesclagem .

gitx http://gitx.frim.nl/

Alguns erros ao trabalhar com conjuntos de commits grandes, mas ótimos para navegar pelas alterações e escolher diferentes alterações no palco e, em seguida, confirmar.