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

599

Qual é a melhor ferramenta para visualizar e editar uma mesclagem no Git? Eu gostaria de obter uma visualização de mesclagem em três direções, com "mine", "deles" e "ancestral" em painéis separados e um quarto painel de "saída".

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

Meu sistema operacional é o Ubuntu.

andy
fonte
15
"Mas agora não é permitido" sim, é por isso que eu odeio o stackoverflow hoje em dia. É muito seco e chato sem essas perguntas.
István Ujj-Mészáros 03/03
17
Existe um site stackexchange em que esse tipo de pergunta é permitido? Se não, deve haver ..
fzzylogic
16
Parece que é hora de um novo estouro de pilha, onde essas perguntas são permitidas. Claramente, como muitas dessas afirmações são valiosas para tantas pessoas, é completamente estúpido fechá-las. Acho que você passou por cima da burocracia. Que tal você fazer uma pesquisa sobre o assunto e ver o que seus "clientes" quer; P
Piotr Owsiak
9
softwarerecs.stackexchange.com
Philipp Wendler
6
O problema: softwarerecs é inútil porque os especialistas estão aqui, não lá.
reinierpost

Respostas:

337

O Meld é uma ferramenta de difusão / mesclagem gratuita, de código aberto e multiplataforma (UNIX / Linux, OSX, Windows).

Veja como instalá-lo em:

user20805
fonte
53
quem se importa com o sistema operacional que o autor original está usando ?, a pergunta é geral o suficiente para interessar a todos que o procuram. E o diff de 3 vias é quando você realmente vê 4 painéis com teste; base de mesclagem / local / remoto / resultado
Evgeny
16
meldé tedioso com diferenças complexas, poder selecionar opções como chose b for all unresolved conflictsé muito melhor do que ter que clicar manualmente na seta correta para cada pedaço meld. Além disso, ser capaz de mesclar em um arquivo de saída específico, em vez de editar os arquivos de entrada no local, é inestimável para o backup de nerges com falha.
Mark Booth
3
O @naxa Meld agora tem um instalador do Windows: code.google.com/p/meld-installer
Roman
6
O kdiff3 permite ver 4 visualizações, o meld permite apenas 3 visualizações. O Meld não é uma ferramenta de mesclagem real, é uma ferramenta diff, pois não mostra a visualização da versão base.
Akira Yamamoto
4
Meld é horrível, especialmente para fusões. Ele não tem opção para "transferir automaticamente alterações não conflitantes", tornando cada fusão terrivelmente dolorosa.
Cerin 25/05
91

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, 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'

Observe que no Unix / Linux você não deseja que a $BASEvariável seja analisada pelo seu shell - ela deve aparecer no seu arquivo ~ / .gitconfig para que isso funcione.

Evgeny
fonte
10
Observe que, como o p4merge é (agora) um dos mergetools oficialmente suportados pelo git, não deve ser necessário mexer na ferramenta. variável .cmd mais.
Matt Ball
2
Certifique-se de que você está usando correta citação: stackoverflow.com/a/1217994/3543437
kayleeFrye_onDeck
64

O Beyond Compare 3 , meu favorito, possui umafuncionalidade de mesclagem na edição Pro . A coisa boa com sua mesclagem é que ela permite ver todas as quatro visualizações: resultado base, esquerdo, direito e mesclado. É um pouco menos visual que o P4V, mas muito mais que o WinDiff. Ele se integra a muitos controles de origem e funciona no Windows / Linux. Possui muitos recursos, 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 mesclagem (veja algumas capturas de tela ). 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 obtenção da ferramenta sem o cliente.

O SourceGear Diff / Merge pode ser minha segunda opção de ferramenta gratuita. Verifique a mesclagem da captura de tela e você verá que tem pelo menos três visualizações.


O Meld é uma ferramenta gratuita mais recente que eu preferiria ao SourceGear Diff / Merge : Agora também está funcionando na maioria das plataformas (Windows / Linux / Mac) com a vantagem distinta de oferecer suporte nativo a algum controle de origem como o Git . Portanto, você pode ter um histórico de diferenças em todos os arquivos muito mais simples. A exibição de mesclagem (veja a captura de tela ) possui 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 suportar 5 visualizações mescladas , isso seria realmente incrível, porque se você escolher um commit no Git, realmente não terá uma base, mas duas. Duas bases, duas alterações e uma mesclagem resultante.

Wernight
fonte
7
O Perforce Merge é ótimo. Ele tem uma ferramenta painel 4 merge, que realmente ajuda: seu, deles, Base Comum, New
Gal
4
P4 também é usado pelo Google .
Wernight 02/08/19
5
Você pode instalar apenas o P4Merge personalizado sem o restante do forforce.
Dirk Bester
6
A versão mais recente do p4merge não possui a interface "somente leitura". Você pode editar o arquivo mesclado no painel inferior.
Ian Ni-Lewis
1
Esta é realmente uma ótima resposta e discussão. Obrigado por compartilhar!
Mark Boa
45

Eu ouço coisas boas sobre o kdiff3.

kryger
fonte
4
+1: kdiff3 é muito superior ao meld e também é suportado nativamente pelo git.
Mark Booth
3
kdiff3tem muito mais recursos, mas meldtem uma interface melhor. Na minha opinião, meldé melhor para mesclagens fáceis onde os recursos fornecidos por meldsão suficientes. Lembre-se de tentar diffusetambém.
Mikko Rantalainen
O kdiff3 permite ver 4 visualizações, o meld permite apenas 3 visualizações. O Meld não é uma ferramenta de mesclagem real, é uma ferramenta diff, pois não mostra a visualização da versão base.
Akira Yamamoto
43

Minha ferramenta de mesclagem visual favorita é o SourceGear DiffMerge

  • É de graça.
  • Plataforma cruzada (Windows, OS X e Linux).
  • UI visual limpa
  • Todos os recursos de diferenças que você esperaria (Diferença, Mesclagem, Diferença de pasta).
  • Interface da Linha de comando.
  • Atalhos de teclado utilizáveis.

Interface de usuário

Lucas
fonte
3
como você o configura para funcionar com o git?
Ryan Lundy
2
Obrigado por me apresentar !! : D Esta ferramenta está limpa e levou menos tempo para instalar e trabalhar do que o meld. Passo meia hora tentando instalar o meld. Mas este eu fiz em 5 min !!
om39a
2
Nota: diffmerge não parece ter um recurso de mesclagem de três vias. Estou abandonando-o depois de tentar por algumas semanas por esse motivo
StormeHawke 10/10
É uma boa ferramenta e também pode comparar pastas. O problema é meio lento (MacBookPro 15 2014, MacOS Catalina)
emKaroly 5/01
33

vimdiff

Depois de aprender o vim (e IMHO você deveria), o vimdiff é apenas mais um pequeno conceito ortogonal bonito para aprender. Para obter ajuda on-line no vim:

:help vimdiff 

Esta pergunta aborda como usá-lo: Como uso o vimdiff para resolver um conflito?

insira a descrição da imagem aqui

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 meld.

Andrew Wagner
fonte
<3 vimdiff, não consigo descobrir como convencer o svn a me deixar usá-lo como uma ferramenta de 'mesclagem'.
klokop
O gvimdiff também funciona bem para esse fim.
new123456
2
Usar o plugin Fugitive torna ainda mais fácil! vimcasts.org/episodes/...
Erik Westrup
Se ao menos houvesse uma maneira de ver claramente a diferença entre local / base e base / remoto.
Ciro Santilli escreveu
24

Você pode tentar o P4Merge .

Visualize as diferenças entre as versões do arquivo com o P4Merge. Resolva conflitos que resultam do desenvolvimento paralelo ou simultâneo via código de cores.

Os recursos incluem:

  • Realçar e editar diferenças de arquivos de texto
  • Escolha incluir ou ignorar terminações de linha ou espaços em branco
  • Reconhecer convenções de final de linha para Windows (CRLF), Mac (CR) e Unix (LF)
  • Use parâmetros de linha de comando e inicie a partir de aplicativos que não são do 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 ativos modificados na hierarquia familiar de arquivos / pastas
  • Compare JPEG, GIF, TIFF, BMP e outros formatos de arquivo
  • Estenda usando a API Qt
  • Sobrepor imagens ou exibir lado a lado
  • Destacar diferenças nas imagens sobrepostas
Ron
fonte
melhor que eu já vi até agora. facilmente resolver conflitos por escolher a mudança da lista de três vias vista
Chovy
Novo link: perforce.com/downloads/helix#product-10
Brill Pappin
Correções de link perforce.com/downloads/helix#clients
Al-Mothafar,
Começou a usá-lo hoje e é bastante intuitivo.
Resource
22

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

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

niutech
fonte
2
A ferramenta de mesclagem do Idea é simplesmente brilhante. ele está disponível na edição da comunidade da Idea, o que significa que você pode usá-lo gratuitamente como ferramenta de mesclagem avançada - é o que estou fazendo (na maioria dos casos, uso o VSCode onde estou trabalhando e o Idea para casos de mesclagem difíceis). O VSCode também faz um bom trabalho e, às vezes, até melhor do que o Idea. mas para casos difíceis o seu 3-painéis layout é a melhor ferramenta que eu já vi
godblessstrawberry
Eu odeio como a barra de rolagem 'arquivo summery' NÃO está junto! A principal razão que eu gosto difuso!
anthony
16

Difuso é o meu favorito, mas é claro que sou tendencioso. :-) É muito fácil de usar:

$ diffuse "mine" "output" "theirs"

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

kenorb
fonte
2
Eu realmente gosto de difuso, e não sou tendencioso.
jturcotte
2
@Derrick Moser: diffuseparece muito bom. Eu apenas tentei agora e fez melhor do que kdiff3. Mas, estou tentando usá-lo git mergetoole ele abre 4 arquivos um ao lado do outro (local, resultado de mesclagem, remoto, base), e minha tela não é suficientemente larga para isso. Eu tive que fazer muita rolagem horizontal. O kdiff3 mostra apenas 3 um ao lado do outro e o resultado na metade inferior da janela.
Yairchu
diffuse tem algumas opções adicionais de mesclagem em comparação com o meld (permite juntar as duas versões em vez de escolher uma delas).
Audrius Meskauskas
O diffuse funciona imediatamente no Windows, para comparar duas pastas, com o repositório CVS, com o repositório Git, mesclando conflitos de mesclagem do git. Os arquivos diff difusos são abertos em guias em uma única janela. Eu mudei para difuso (depois de ter usado o ediff do emacs (muitos recursos, útil nos anos 90)> vimdiff (teclas complicadas de plugins)> p4merge> araxis (propriedade)> meld (muito lento), tkdiff (apenas cvs)> kdiff3 (bom , bom regex ignora recursos)> winmerge (bom)> difuso (rápido, portátil, funciona como esperado)) na primeira vez que tentei difundir.
mosh
Como mudar o idioma da GUI em Diffuse?
Zach
9

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

user35149
fonte
6

Portanto, para a fusão do git, você pode tentar:

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

    DiffMerge

  • Meld , é uma ferramenta visual de diferenças e mesclagem.

    Meld é uma ferramenta visual de diferenças e mesclagem

  • KDiff3 , um programa diff e merge), que compara ou mescla 2 ou 3 arquivos / diretórios de entrada de texto.
  • opendiff(parte do Xcode Tools no macOS), um utilitário de linha de comando que inicia o aplicativo FileMerge do Terminal para comparar graficamente arquivos ou diretórios, incluindo a mesclagem .
kenorb
fonte
2
git config --global merge.tool opendifffuncionou melhor para mim
James Matthew Mudgett
5

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

Pessoalmente, achei o Atom uma ótima ferramenta para visualizar diferenças e resolver / mesclar conflitos.

Quanto à mesclagem, não há três visualizações, mas é tudo combinado em um com realce colorido para cada versão. Você pode editar o código diretamente ou existem botões para usar a versão desse snippet que você desejar.

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

  • Você pode iniciá-lo na linha de comando e transmitir um único arquivo para o qual deseja abrir ou adicionar sua pasta do projeto (git repo).

    • Eu também recomendaria o gerente de projetos como uma maneira muito conveniente de navegar entre os projetos sem encher a visualização em árvore.
  • O único problema que tive foi atualizar - ao trabalhar com repositórios grandes, o atom pode demorar para atualizar as alterações feitas fora dele. Eu sempre o fecho quando termino e reabri quando quero visualizar minhas alterações / confirmar novamente. Você também pode recarregar a janela com ctrl + shift + f5, que leva apenas um segundo.

E é grátis, é claro.

Sean McCallum
fonte
3

Eu uso diferentes ferramentas para mesclar e comparar:

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

Punho pode ser chamado por:

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

O segundo é chamado quando você usa git mergetool.

efêmero
fonte
2

Você pode instalar a ferramenta diff / merge do ECMerge no seu Linux, Mac ou Windows. Ele é pré-configurado no Git, portanto, apenas o uso git mergetoolfará o trabalho.

Armel
fonte
2

Se você usa o visual studio , a ferramenta interna Team Explorer é uma ferramenta muito boa para resolver conflitos de mesclagem de git.

Charith
fonte
0

gitx http://gitx.frim.nl/

Alguns erros ao trabalhar com conjuntos de confirmação grandes, mas ótimos para navegar pelas alterações e escolher diferentes alterações para preparar e depois confirmar.

Blake Lucchesi
fonte