Qual é a melhor ferramenta de mesclagem de três vias? [fechadas]

272

O Subversion, Git, Mercurial e outros suportam fusões de três vias (combinando a mina, a deles e a revisão "base") e suportam ferramentas gráficas para resolver conflitos.

Qual ferramenta você usa? Windows, Mac OS X, Linux, gratuito ou comercial, você escolhe.

Aqui estão algumas que eu já usei ou ouvi falar, apenas para iniciar a conversa:

(Reconheço que isso é como a Melhor Ferramenta de Diferença , mas é diferente porque me concentro explicitamente nas ferramentas de mesclagem de três vias; o WinMerge está fora da lista, por exemplo.)

Dan Fabulich
fonte
4
Na verdade, o WinMerge tem uma comparação de três maneiras usando-o com ferramentas VCS, você só precisa passar 3 arquivos (esquerda, direita, resultado) como argumentos para a linha de comando e ele faz o trabalho.
Zilvinas
3
É difícil dizer qual é a melhor ferramenta de mesclagem, pois depende de fatores subjetivos. Mas se você estiver procurando um recurso que marca a diferença, tente semanticmerge.com
Daniel Peñalba
28
Como essa questão pode ser encerrada como não construtiva? Tem 182 votos positivos, 123 estrelas e 11 respostas, obviamente muitas pessoas pensam que é construtivo.
hellogoodbye
3
@Shuklaswag Como isso se relaciona com a minha pergunta? Gostaria de saber por que foi fechado como "não construtivo".
HelloGoodbye

Respostas:

167

Código aberto KDiff3 , plataforma cruzada

A mesma interface para Linux e Windows, algoritmo muito inteligente para resolver conflitos, expressões regulares para resolver automaticamente conflitos, integra-se ao ClearCase, SVN, Git, MS Visual Studio, arquivo mesclável editável, compara diretórios

Sua navegação pelo teclado é excelente: ctrl-setas para navegar pelas diferenças, ctrl-1, 2, 3 para fazer a mesclagem.

Além disso, consulte https://stackoverflow.com/a/2434482/42473

insira a descrição da imagem aqui

sotto
fonte
10
Mais vantagens do KDiff3: mesma interface para Linux e Windows, algoritmo muito inteligente para resolver conflitos, expressões regulares para resolver automaticamente conflitos, integrar com ClearCase, SVN e Git, arquivo mesclável editável, comparar diretórios.
Neves
3
@ Thomass Isso não é verdade, veja a outra kdiff3resposta para um exemplo. kdiff3felizmente difere e mescla árvores de diretório inteiras e o faz há muitos anos! Algumas ferramentas (como git) podem iniciá-lo apenas por arquivo, mas outras (como mercurial) permitem que você trilhe repositórios inteiros de diferenças / mesclagens.
Mark Booth
2
O KDiff3 é terrível quando as alterações locais e outras diferem no número de linhas adicionadas; se você adiciona localmente as linhas A, B e C, mas a outra alteração apenas adiciona A e C, o KDiff3 descobre que A foi adicionado, então encontra B em conflito com C e adiciona C de qualquer maneira.
314 Neil
3
Alguém tem uma opinião sobre esta resposta em 2016?
Shadoninja
4
Não é suportado desde 2014
Ruslan K.
106

Acabei de verificar o P4merge desde que ouvi falar em outro artigo do blog:

insira a descrição da imagem aqui

Interface muito lisa e GRÁTIS! Eu sou um usuário fiel do Araxis Merge, mas, considerando que isso é gratuito e incrível, recomendamos que você verifique.

Dan Esparza
fonte
11
Está disponível para Windows, Mac, Linux, FreeBSD e Solaris 10
Grant Limberg
36
@Art: é claro que você pode editar o resultado da mesclagem no P4Merge. Eu faço isso o tempo todo!
Sklivvz 16/05
9
O p4merge também não é "gratuito" para empresas. A licença é limitada para uso comercial.
DH4 16/01/2013
21
@ DH4 Acabei de receber um e-mail de apoio oficial Perforce e P4Merge é livre para uso comercial (Eu trabalho para MS, ele não fica mais empresarial do que isso;))
Ohad Schneider
4
Não há suporte para comparação de pastas no P4merge. Teria sido um ótimo complemento para o P4Merge.
RuntimeException
95

O Beyond Compare 3 Pro suporta a fusão de três vias e é uma ferramenta de mesclagem bastante impressionante. É comercial (mas vale a pena, IMHO) e está disponível no Windows, Linux e Mac OS X.

Como apontado em um comentário, também é barato.

Digite a descrição da imagem aqui

Nota: Se não houver um conjunto de mesclagem, ou seja, marcadores de mesclagem residentes no arquivo de destino, o Beyond Compare não oferecerá comparação / edição de arquivo de três vias. O Beyond Compare diz que esse recurso está na lista deles .

Nota: a mesclagem bidirecional é um recurso somente da edição Pro do Beyond Compare 3

Joshua McKinnon
fonte
16
O +1 Beyond Compare vale facilmente o preço, especialmente quando você considera outros recursos.
21139 jamiei
2
Bom, mas não há suporte para pastas selecionando
Michael Fitzpatrick
9
Michael, não sei bem o que você quer dizer. O Beyond Compare oferece excelente suporte para pastas diferentes: scootersoftware.com/moreinfo.php .
23412 Bruce
4
É claramente indicado no seu site - resposta atualizado para afirmar versão Pro é um requisito para 3-way merge
Joshua McKinnon
2
Além do Compare 4, foi adicionado o suporte para Mesclar pastas.
21416 Chris Kennedy
75

Meld Diff Viewer

Eu tive apenas boas experiências trabalhando com Meld. Eu o uso quando tenho que fazer mesclagens de código confusas entre ramificações. É simples de usar e possui uma interface limpa.

  • Código aberto
  • Linux, Windows e MacOS suportados
  • Diferença de Múltiplos Arquivos
  • Suporte de comparação de três vias

No Ubuntu, a instalação é tão simples quanto: sudo apt-get install meld

insira a descrição da imagem aqui

Elijah
fonte
3
+1 Meld é um software liso, limpo, "apenas o suficiente".
Trevor Bramble,
15
Meld é falho e suas pistas visuais são enganosas.
Aib
6
Meld nem funciona corretamente com o git.
slikts
65
Infelizmente, o Meld NÃO é uma ferramenta de mesclagem de três vias (até mesmo a indica na página inicial). Para mesclar três vias, você precisa de QUATRO janelas (o arquivo base). Mas eu amo meld, funciona muito bem.
lzap
8
@lzap, na verdade, o meld era de três vias, mas não havia documentos e há um mês ou mais eu notei que eles removeram completamente a mesclagem de três vias: is.gd/prKX5d Se você usar uma versão suficientemente antiga, ainda estará sorte embora.
Magnus
45

vimdiff. É ótimo. Tudo que você precisa é de uma janela de um metro e meio de largura.

insira a descrição da imagem aqui

Paul Beckingham
fonte
11
Levou algum tempo para descobrir que você pode fazer "gvimdiff -O branch1.txt base.txt branch2.txt merge.txt" e use ctrl + w J para mover o buffer de mesclagem para a parte inferior da tela. É assim que você o usa?
Wim Coenen
Praticamente, exceto que eu uso o vim, não o gvim.
21320 Paul Beckingham
7
voto negativo, ele realmente não resolve conflitos, é apenas diff.
Piotr
3
vimdiff agora tem manuseio agradável git para 3-way fusão (ou seja, 4 painéis) - vim.wikia.com/wiki/...
Sonia Hamilton
8
@piotr vimdiff realmente resolve conflitos. Você usa o comando "diffg <bufferNum>" para criar o arquivo mesclado no painel inferior. O painel de mesclagem de buttom é o buffer 1 e os outros são 2,3,4 na parte superior. Para pular para diffs, use [c e] c. Esta é uma funcionalidade pronta para uso no debian wheezy 7.7.
Ikky
37

Mesclagem do diferencial da engrenagem de origem :

Mescla de verdade, multi-plataforma mescla e é totalmente gratuita para uso comercial ou pessoal.

insira a descrição da imagem aqui

CMS
fonte
1
Eu uso o DiffMerge há anos e gostei. No entanto, li este post do blog em que o autor estava analisando as ferramentas de mesclagem por diferenças e reduziu a lista para DiffMerge e P4Merge. Ele acabou usando o P4Merge simplesmente porque tinha uma interface melhor. Acabei de começar a usar o P4Merge hoje e precisaria concordar. Em particular, o DiffMerge não mostra bem as alterações - mostra-as como uma exclusão e inserção. Isso pode ser confuso se houver muitas alterações próximas. O P4Merge exibe melhor.
Simon Tewsi
1
Vejo que DiffMerge é não livre , custa US $ 19
erkfel
3
@erkfel, isso está incorreto. O registro é opcional e o software é gratuito: "O SourceGear DiffMerge é uma ferramenta premiada de difusão e mesclagem de arquivos que ajuda desenvolvedores profissionais e entusiastas desde 2007. O SourceGear DiffMerge é licenciado para uso gratuito. No entanto, registrando o DiffMerge você ajudará a financiar o desenvolvimento, a manutenção e o suporte de novos produtos. Como forma de agradecer aos usuários registrados e incentivar registros adicionais, adicionamos alguns novos recursos no 4.2 ... "(no texto do programa)
Muhd
1
Uma coisa que acho útil no DiffMerge, em comparação com o P4Merge (que agora uso para diferenciar e mesclar no git), é que ele se integra ao Windows File Explorer. Em particular, lembro-me de um arquivo em uma pasta e comparo o arquivo lembrado com outro em uma pasta diferente. Acho isso útil talvez uma ou duas vezes por mês, onde não preciso mover dois arquivos para a mesma pasta para compará-los (por exemplo, scripts SQL que não estão sob controle de origem).
Simon Tewsi
1
@SimonTewsi: O P4Merge para Mac não exige que os arquivos estejam na mesma pasta. Ele permite que você navegue no sistema de arquivos e selecione os arquivos base, primeiro e segundo de qualquer lugar do computador.
21816 Steve
32

Araxis Merge . É comercial, mas vale a pena ... Está disponível para Windows e Mac OS X.

Digite a descrição da imagem aqui

Dave
fonte
5
Concordo, é o melhor que já usei.
1111 Dan Danson
1
Minha observação: é relativamente lento ao lidar com arquivos grandes em torno de 5 MB.
Naga Kiran
3
+1 para Araxis. Uma das poucas ferramentas que eu estava disposto a pagar para ter um bom dinheiro para uso pessoal. Tudo o resto é desordenado, confuso e empalidece em comparação (trocadilhos).
Dan Esparza
8
Depois de usar o Araxis por um longo tempo, minha empresa mudou para o KDiff3 pelos seguintes motivos: (1) Quando uma mesclagem no Araxis é cancelada, o arquivo ainda é marcado como resolvido no TortoiseHg. (2) O Araxis mostra uma mistura da revisão da base e do resultado da mesclagem no painel "Resultado da mesclagem", que é freqüentemente confuso. (3) No TortoiseHg, o KDiff3 se fundirá automaticamente sem a interação do usuário, se possível. (4) O algoritmo de mesclagem do KDiff3 parece fazer um trabalho melhor. No entanto, ainda usam Araxis como nossa ferramenta de comparar :)
Michael Platings
2
Conforme mencionado nos comentários para outras respostas, uma ferramenta de mesclagem adequada de 3 vias possui 4 painéis - base, local, remoto e resultado . Araxis confunde base e resultado, o que pode levar a problemas.
neonblitzer 17/01
27

O algoritmo de resolução de conflitos do Kdiff3 é realmente impressionante.

Mesmo quando o subversion indica um conflito, o Kdiff3 o resolve automaticamente. Existem versões para Windows e Linux com a mesma interface. É possível integrá-lo ao Tortoise e ao seu shell linux.

Está na lista do meu software de código aberto favorito. Uma das primeiras ferramentas que instalo em qualquer máquina.

Você pode configurá-lo como a ferramenta diff padrão no Subversion, Git, Mercurial e ClearCase. Ele também resolve quase todos os conflitos do ClearCase. No Windows, ele possui uma ótima integração com o Windows Explorer: selecione dois arquivos e clique com o botão direito do mouse para compará-los ou clique com o botão direito do mouse para 'salvar em um arquivo posterior' e, em seguida, selecione outro para comparar.

O arquivo mesclado é editável. Possui atalhos de teclado lisos.

Você também pode usá-lo para comparar e mesclar diretórios. Vejo: Kdiff3 Comparando diretórios

Um recurso avançado é usar expressões regulares para definir mesclagens automáticas.

Meu único incômodo é que é um pouco difícil compilar se não estiver presente no seu repositório de distribuição favorito.

neves
fonte
3
Eu concordo com o algoritmo de mesclagem. É incrivelmente sofisticado e, estranhamente, parece "saber" o que você deseja fazer de uma maneira que outras ferramentas não podem. Ele esmaga regularmente o diff3 e o Subversion (blarg) e pode até ser útil com uma mesclagem do Git.
Kevinarpe
onde estão os atalhos do teclado para ir a seguir e escolher a / b / c?
MyLord
@mylord: use um pequeno atraso no avanço automático e os atalhos Ctrl-1/2/3 para selecionar A / B / C para muitos conflitos.
Neves
algo substituiu o KDiff3 para você? Grande usuário, mas me vejo vendo se há uma alternativa melhor nos dias de hoje
chrispepper1989 17/02
1
@ chrispepper1989, eu ainda uso o KDiff3 no Git hoje. Nunca encontrei um aplicativo de mesclagem de três vias que seja significativamente melhor que o KDiff3. O P4Merge possui uma interface mais moderna, mas quando o testei, você não conseguiu editar o arquivo mesclado (acho que pode fazê-lo agora).
neves
13

Eu amo Ediff . Ele vem embutido no GNU Emacs .

Para fazer uma comparação de três vias, use ediff-files3(para selecionar três arquivos) ou ediff-buffer3(para selecionar três buffers já abertos). Você verá uma tela assim:

diff de três vias no emacs

Observe o destaque da palavra-diferença.

Você pode bater nou ppara ir para a próxima / anterior diffs, enquanto que abirá copiar a região de tampão A (o mais à esquerda) para o buffer b (o do meio), e da mesma forma para outras combinações de duas letras de a, b, c; rbrestaurará a região no buffer b. Clique em ?para obter um menu de ajuda rápida ou leia o manual sobre difusão do diff3 no Emacs .

jcrossley3
fonte
6
Por mais que eu goste do ediff, vejo apenas dois buffers acima ... uma mesclagem de três vias deve ter 3 ou 4 janelas: as três sendo mescladas (local, remota e sua base ancestral comum) e a saída de mesclagem final . Há não parecem ser uma mesclagem de 3 vias em ediff (chamado ediff-merge-with-ancestor), mas eu não tenho certeza se ele tem 3 painéis ou 4, e também a imagem acima não reflete isso.
ShreevatsaR
Editado para mostrar uma diferença de três vias @ShreevatsaR
unhammer
@unhammer Obrigado, isso é melhor, mas ainda mostra apenas 3 janelas, portanto não está claro que seja uma verdadeira diferença de três vias (que teria quatro janelas; veja o kdiff3 e outros exemplos). Se o que é mostrado na captura de tela está sendo mesclado, onde está a saída?
ShreevatsaR
Você destrutivamente modifica um (ou mais!) Dos buffers. É por isso que mencionei que abcopiará a região do buffer a para o buffer b. Eu não acho que exista uma versão de quatro janelas ediffainda. (Eu sei emergeusos tamponar uma saída dedicada vez, mas emerge-files-with-ancestornão mostram o ancestral só a usa para adivinhar a versão correta por ver qual deles concorda com a ancestral.)
unhammer
11

Ultracompare . É realmente bom, lida bem com arquivos grandes (mais de 1 GB), está disponível para Windows / Mac / Linux e é comercial, mas vale a pena.

Captura de tela do UltraCompare Professional no Windows

MrTelly
fonte
Não sei como configurá-lo para suportar a fusão de três vias ... Ele pode exibir um arquivo base no meio, dois arquivos alterados à esquerda e à direita, para que eu possa ver o que foi alterado nos dois arquivos com base na base e o resultado mesclado de 2 arquivos alterados está na parte inferior? Estou usando o UltraCompare 17.0
Ricky
1
Um pouco de pesquisa no Google encontrou isso ultraedit.com/support/tutorials-power-tips/ultracompare/… - fala sobre a fusão de três maneiras na mesclagem avançada da etapa 6.
precisa saber é o seguinte
11

Difusa é uma ferramenta de mesclagem de três vias fácil de usar. Ele suporta todas as plataformas e sistemas de controle de versão que você mencionou e pode comparar mais de três arquivos ao mesmo tempo.

insira a descrição da imagem aqui

Jordan Ryan Moore
fonte
2
E ainda suporta a comparação de arquivos N ao mesmo tempo! Isso é útil se você precisar comparar arquivos de configuração de muitos aplicativos homogêneos.
Pio Raeder #
Eu uso difuso para o meu arquivo de mais de três compara
mohas
6

xxdiff se você estiver no Linux.

Digite a descrição da imagem aqui

Mark Harrison
fonte
4

O resumo é que achei o ECMerge um ótimo produto, embora comercial. http://www.elliecomputing.com/products/merge_overview.asp

insira a descrição da imagem aqui

Também concordo com MrTelly que o Ultracompare é muito bom. Um recurso interessante é que ele compara os documentos RTF e Word, o que é útil quando você termina a programação em word com os vendedores e eles não gerenciam seus documentos corretamente.

Steve Midgley
fonte
O primeiro link não está funcionando, ele retorna 500 erros. Se o recurso foi movido, ajuste o URL.
Sergey P. aka azure
@ SergeyP.akaazure - desculpe por isso. Meu blog é extinta - Eu removi o link ..
Steve Midgley