Qual è il miglior strumento di unione a tre vie? [chiuso]


272

Subversion, Git, Mercurial e altri supportano fusioni a tre vie (combinando la mia, la loro e la revisione "base") e supportano strumenti grafici per risolvere i conflitti.

Quale strumento usi? Windows, Mac OS X, Linux, gratuito o commerciale, lo chiami.

Eccone alcuni che ho usato o sentito parlare, solo per iniziare la conversazione:

(Riconosco che questo è un po 'come il migliore strumento Diff , ma è diverso in quanto mi concentro esplicitamente su strumenti di unione a tre vie; WinMerge è fuori dalla lista, per esempio.)



4
In realtà WinMerge ha un confronto a 3 vie utilizzandolo con strumenti VCS, devi solo passare 3 file (sinistra, destra, risultato) come argomenti alla riga di comando e fa il lavoro.
Zilvinas,

3
È difficile dire quale sia il miglior strumento di unione, perché dipende da fattori soggettivi. Ma se stai cercando una caratteristica che segna la differenza, prova semanticmerge.com
Daniel Peñalba,

29
Come può essere chiusa questa domanda come non costruttiva? Ha 182 voti, 123 stelle e 11 risposte, ovviamente molte persone pensano che sia costruttivo.
Ciao Arrivederci

3
@Shuklaswag Come si collega alla mia domanda? Mi chiedevo perché fosse chiuso come "non costruttivo".
Ciao Arrivederci,

Risposte:


167

KDiff3 open source, multipiattaforma

Stessa interfaccia per Linux e Windows, algoritmo molto intelligente per la risoluzione dei conflitti, espressioni regolari per la risoluzione automatica dei conflitti, integrazione con ClearCase, SVN, Git, MS Visual Studio, file unito modificabile, confronto di directory

La sua navigazione da tastiera è fantastica: ctrl-frecce per navigare tra diff, ctrl-1, 2, 3 per fare l'unione.

Inoltre, consultare https://stackoverflow.com/a/2434482/42473

inserisci qui la descrizione dell'immagine


10
Altri vantaggi di KDiff3: stessa interfaccia per Linux e Windows, algoritmo molto intelligente per la risoluzione dei conflitti, espressioni regolari per la risoluzione automatica dei conflitti, integrazione con ClearCase, SVN e Git, file unito modificabile, confronto di directory.
neves

3
@ThomasS Questo non è vero, vedi l' altra kdiff3risposta per un esempio. kdiff3sarà felicemente diff e fonderà interi alberi di directory e lo ha fatto per molti anni! Alcuni strumenti (come git) possono avviarlo solo per file, ma altri strumenti (come mercurial) ti permetteranno felicemente di diff / unire tre repository interi.
Mark Booth,

2
KDiff3 è terribile quando le modifiche locali e di altro tipo differiscono nel numero di righe aggiunte; se localmente aggiungi le righe A, B e C, ma l'altra modifica ha aggiunto solo A e C, allora KDiff3 scopre che A è stato aggiunto, quindi trova B in conflitto con C, quindi aggiunge C comunque.
Neil,

3
Qualcuno ha un'opinione su questa risposta nel 2016?
Shadoninja,

4
Non supporta dal 2014
Ruslan K.,

106

Ho appena verificato P4merge da quando ne ho sentito parlare in un altro articolo del blog:

inserisci qui la descrizione dell'immagine

Interfaccia molto fluida e GRATUITA! Sono stato un fedele utente di Araxis Merge, ma considerando che questo è gratuito e fantastico, ti incoraggio a dare un'occhiata.


11
È disponibile per Windows, Mac, Linux, FreeBSD e Solaris 10
Grant Limberg

36
@Art: ovviamente puoi modificare il risultato della fusione in P4Merge. Lo faccio tutto il tempo!
Sklivvz,

9
Anche p4merge non è "gratuito" per le aziende. La licenza è limitata per uso commerciale.
DH4,

21
@ DH4 Ho appena ricevuto un'e-mail dal supporto ufficiale di Perforce e P4Merge è gratuito per uso commerciale (lavoro per MS, non ho più impresa di così;))
Ohad Schneider

4
Nessun supporto per il confronto delle cartelle in P4merge. Sarebbe stata un'ottima aggiunta a P4Merge.
RuntimeException

95

Beyond Compare 3 Pro supporta l' unione a tre vie ed è uno strumento di unione piuttosto impressionante. È commerciale (ma ne vale la pena, IMHO) ed è disponibile su Windows, Linux e Mac OS X.

Come sottolineato in un commento, è anche economico.

Inserisci qui la descrizione dell'immagine

Nota: se non si dispone di un set di unione, ovvero unisci i marker residenti nel file di destinazione, Beyond Compare non offre il confronto / modifica dei file a tre vie. Beyond Compare afferma che la funzionalità è presente nell'elenco .

Nota: l'unione a 3 vie è una funzione dell'edizione Pro di Beyond Compare 3


16
+1 Beyond Compare vale facilmente il prezzo, soprattutto se si considerano altre funzionalità.
Jamiei,

2
Bene, ma nessun supporto per la selezione delle cartelle
Michael Fitzpatrick,

9
Michael, non sono sicuro di cosa intendi. Beyond Compare offre un ottimo supporto per cartelle diverse: scootersoftware.com/moreinfo.php .
Bruce Christensen,

4
È chiaramente indicato sul loro sito Web - la risposta aggiornata alla versione Pro è un requisito per l'unione a 3 vie
Joshua McKinnon,

2
Beyond Compare 4 ha aggiunto il supporto per la fusione delle cartelle.
Chris Kennedy,

76

Meld Diff Viewer

Ho avuto solo buone esperienze lavorando con Meld. Lo uso quando devo fare fusioni di codice disordinato tra i rami. È semplice da usare e ha un'interfaccia pulita.

  • Open Source
  • Linux, Windows e MacOS supportati
  • Diff. File multipli
  • Supporto comparativo a tre vie

In Ubuntu, l'installazione è semplice come: sudo apt-get install meld

inserisci qui la descrizione dell'immagine


3
+1 Meld è un software semplice, pulito e "appena sufficiente".
Trevor Bramble,

15
La fusione è imperfetta e i suoi indizi visivi sono fuorvianti.
aib

6
Meld non funziona nemmeno con git correttamente.
scivola il

65
La fusione, sfortunatamente, NON è uno strumento di unione a tre vie (anche se lo dichiarano sulla homepage). Per l'unione a tre vie sono necessarie QUATTRO finestre (il file di base). Ma adoro la fusione, funziona alla grande.
lzap,

8
@lzap, in realtà la fusione era a tre vie, ma era priva di documenti e circa un mese fa ho notato che hanno rimosso completamente l'unione a 3 vie: is.gd/prKX5d Se rimani con una versione abbastanza vecchia sei ancora in fortuna però.
Magnus,

45

vimdiff. È ottimo. Tutto ciò che serve è una finestra larga tre piedi.

inserisci qui la descrizione dell'immagine


11
Ci è voluto del tempo per capire che si può fare "gvimdiff -O branch1.txt base.txt branch2.txt merge.txt" e usare ctrl + w J per spostare il buffer di unione nella parte inferiore dello schermo. È così che lo usi?
Wim Coenen,

Praticamente, tranne che uso VIM, non GVIM.
Paul Beckingham,

7
downvote, non risolve davvero i conflitti, è solo diff.
piotr,

3
vimdiff ora ha una buona gestione git per la fusione a 3 vie (ovvero 4 riquadri) - vim.wikia.com/wiki/…
Sonia Hamilton,

8
@piotr vimdiff risolve davvero i conflitti. Utilizzare il comando "diffg <bufferNum>" per creare il file unito nel riquadro inferiore. Il riquadro di unione dei pulsanti è il buffer 1, gli altri sono 2,3,4 nella parte superiore. Per saltare a diff utilizzare [c e] c. Funzionalità out of the box su debian wheezy 7.7.
ikky

37

Unione Diff .

Combinazioni tridimensionali multipiattaforma ed è completamente gratuito per uso commerciale o personale.

inserisci qui la descrizione dell'immagine


1
Ho usato DiffMerge per anni e mi è piaciuto. Tuttavia, ho letto questo post sul blog in cui l'autore stava esaminando gli strumenti di fusione e ho ridotto l'elenco a DiffMerge e P4Merge. Ha finito per andare con P4Merge semplicemente perché aveva un'interfaccia più bella. Ho appena iniziato a usare P4Merge oggi e dovrei essere d'accordo. In particolare, DiffMerge non mostra bene le modifiche, ma le mostra come cancellazione e inserimento. Questo può essere fonte di confusione se ci sono molti cambiamenti vicini. P4Merge lo visualizza meglio.
Simon Tewsi,

1
Vedo che diffmerge non è gratuito , costa $ 19
erkfel il

3
@erkfel, non è corretto. La registrazione è facoltativa e il software è gratuito: "SourceGear DiffMerge è uno strumento di diffusione e fusione di file pluripremiato che aiuta gli sviluppatori professionisti e gli appassionati dal 2007. SourceGear DiffMerge è concesso in licenza per l'uso gratuito. Tuttavia, registrando DiffMerge aiuterai a finanziare lo sviluppo, la manutenzione e il supporto di nuovi prodotti. Per ringraziare i nostri utenti registrati e incoraggiare ulteriori registrazioni, abbiamo aggiunto alcune nuove funzionalità in 4.2 ... "(nel testo del programma)
Muhd,

1
Una cosa che trovo utile in DiffMerge, rispetto a P4Merge (che ora uso per diffing e fusione in git), è che si integra con Esplora file di Windows. In particolare, posso ricordare un file in una cartella, quindi confrontare il file ricordato con un altro in un'altra cartella. Lo trovo utile forse una o due volte al mese, dove non devo spostare due file nella stessa cartella per confrontarli (ad esempio script SQL non sotto il controllo del codice sorgente).
Simon Tewsi,

1
@SimonTewsi: P4Merge per Mac non richiede che i file si trovino nella stessa cartella. Ti permette di sfogliare il file system e selezionare i file base, primo e secondo da qualsiasi parte del computer.
Steve Samuels,

32

Araxis Merge . È commerciale, ma ne vale la pena ... È disponibile per Windows e Mac OS X.

Inserisci qui la descrizione dell'immagine


5
D'accordo, è il migliore che abbia mai usato.
Dan Olson,

1
La mia osservazione: è relativamente lento quando si gestiscono file di grandi dimensioni intorno a 5 MB.
Naga Kiran,

3
+1 per Araxis. Uno dei pochi strumenti che ero disposto a pagare per avere denaro per uso personale. Tutto il resto è disordinato, confuso e impallidisce in confronto (gioco di parole inteso).
Dan Esparza,

8
Dopo aver usato Araxis per molto tempo, la mia azienda è passata a KDiff3 per i seguenti motivi: (1) Quando viene annullata un'unione in Araxis, il file viene ancora contrassegnato come risolto in TortoiseHg. (2) Araxis mostra una combinazione di revisione di base e risultato della fusione nel riquadro "Unisci risultato" che è spesso confuso. (3) Da TortoiseHg KDiff3 si unirà automaticamente senza l'interazione dell'utente se può farlo. (4) L'algoritmo di merge di KDiff3 sembra semplicemente fare un lavoro migliore. Comunque usiamo ancora Araxis come strumento di confronto :)
Michael Platings,

2
Come menzionato nei commenti per altre risposte, uno strumento di unione a 3 vie ha 4 pannelli: base, locale, remoto e risultato . Araxis unisce base e risultato, il che può portare a problemi.
Neonblitzer,

27

L'algoritmo di risoluzione dei conflitti di Kdiff3 è davvero impressionante.

Anche quando sovversione indica un conflitto, Kdiff3 lo risolve automaticamente. Esistono versioni per Windows e Linux con la stessa interfaccia. È possibile integrarlo con Tortoise e con la tua shell Linux.

È nella lista del mio software open source preferito. Uno dei primi strumenti che installo in qualsiasi macchina.

È possibile configurarlo come strumento diff predefinito in Subversion, Git, Mercurial e ClearCase. Risolve anche quasi tutti i conflitti di ClearCase. In Windows, ha una buona integrazione con Windows Explorer: selezionare due file e fare clic con il tasto destro per confrontarli, oppure fare clic con il tasto destro per 'salvare in un secondo' un file, quindi selezionare un altro per confrontare.

Il file unito è modificabile. Ha scorciatoie da tastiera slick.

Puoi anche usarlo per confrontare e unire le directory. Vedere: Kdiff3 Confronto di directory

Una funzionalità avanzata consiste nell'utilizzare espressioni regolari per la definizione di fusioni automatiche.

Il mio unico fastidio è che è un po 'difficile compilare se non è presente nel tuo repository distro preferito.


3
Sono d'accordo sull'algoritmo di unione. È incredibilmente sofisticato, e sembra stranamente "sapere" cosa vuoi fare in un modo che altri strumenti non possono. Frantuma regolarmente diff3 e Subversion (blarg) e può anche essere utile con un'unione Git.
kevinarpe,

dove sono le scorciatoie da tastiera per andare al prossimo e scegliere a / b / c?
mylord,

@mylord: usa un piccolo Auto-Advance-delay e le scorciatoie Ctrl-1/2/3 per selezionare A / B / C per molti conflitti.
neves

qualcosa ha sostituito KDiff3 per te? Grande utente, ma mi ritrovo a vedere se esiste un'alternativa migliore in questi giorni
chrispepper1989,

1
@ chrispepper1989, uso ancora KDiff3 in Git oggi. Non ho mai trovato un'app di unione a 3 vie significativamente migliore di KDiff3. P4Merge ha un'interfaccia più moderna, ma quando l'ho provato non è stato possibile modificare il file unito (penso che ora puoi farlo).
neves

13

Adoro Ediff . Viene integrato con GNU Emacs .

Per fare una diff a tre vie, usare ediff-files3(per selezionare tre file) o ediff-buffer3(per selezionare tre buffer già aperti). Otterrai uno schermo simile al seguente:

diff a tre vie in emacs

Notare il chiarimento della differenza di parole.

Si può colpire no pper andare alle diff successiva / precedente, mentre abcopierà la regione dal buffer un (quello più a sinistra) al tampone B (quello centrale), e allo stesso modo per le altre combinazioni di due lettere di a, b, c; rbripristinerà la regione nel buffer b. Premi ?per un menu di aiuto rapido o leggi il manuale sull'integrazione di diff3 in Emacs .


6
Per quanto adoro ediff, vedo solo due buffer sopra ... un'unione a 3 vie dovrebbe avere 3 o 4 finestre: i tre che vengono uniti (locale, remoto e la loro base antenata comune) e l'output di unione finale . Ci fa sembra essere una fusione a 3 vie in ediff (chiamata ediff-merge-with-ancestor), ma non sono sicuro se si dispone di 3 riquadri o 4, e anche lo screenshot di cui sopra non riflettere sul fatto che.
ShreevatsaR

Modificato per mostrare un diff a tre vie @ShreevatsaR
unhammer

@unhammer Grazie, è meglio, ma mostra ancora solo 3 finestre, quindi non è chiaro che sia un vero diff a 3 vie (che avrebbe 4 finestre; vedi kdiff3 e altri esempi). Se cosa viene mostrato nello screenshot sono le tre cose che vengono unite, dov'è l'output?
ShreevatsaR

Modifichi in modo distruttivo uno (o più!) Dei buffer. Ecco perché ho detto che abcopierà la regione dal buffer a al buffer b. Non credo ci sia ancora una versione a quattro finestre ediff. (So ​​che emergeusa invece un buffer di output dedicato, ma emerge-files-with-ancestornon mostra l'antenato, lo usa solo per indovinare la versione corretta vedendo quale è d'accordo con l'antenato.)
unhammer

11

Ultracompare . È davvero buono, gestisce bene file di grandi dimensioni (più di 1 GB), è disponibile per Windows / Mac / Linux ed è commerciale, ma ne vale la pena.

Schermata di UltraCompare Professional su Windows


Non so come impostarlo per supportare l'unione a 3 vie ... Può visualizzare un file di base nel mezzo, 2 file modificati a sinistra e a destra, quindi posso vedere cosa sono cambiati in entrambi i file in base alla base file e il risultato unito di 2 file modificati in fondo? Sto usando UltraCompare 17.0
Ricky il

1
Un po 'di googling hanno scoperto che ultraedit.com/support/tutorials-power-tips/ultracompare/… - parla della fusione a 3 vie nella fusione avanzata del passaggio 6.
MrTelly,

11

Diffuse è uno strumento di unione a tre vie facile da usare. Supporta tutte le piattaforme e i sistemi di controllo versione che hai citato e può confrontare più di tre file contemporaneamente.

inserisci qui la descrizione dell'immagine


2
E supporta anche il confronto di N file contemporaneamente! Questo è utile se devi confrontare i file di configurazione da molte applicazioni omogenee.
Pius Raeder l'

Uso Diffuse per i miei più di tre confronti di file
mohas


4

Il riassunto è che ho trovato ECMerge un prodotto eccezionale, sebbene commerciale. http://www.elliecomputing.com/products/merge_overview.asp

inserisci qui la descrizione dell'immagine

Concordo anche con MrTelly che Ultracompare sia molto bravo. Una bella caratteristica è che confronterà i documenti RTF e Word, il che è utile quando finisci per programmare a parole con i venditori e questi non gestiscono correttamente i loro documenti.


Il primo collegamento non funziona, restituisce 500 errori. Se la risorsa è stata spostata, regolare l'URL.
Sergey P. aka azzurro il

@ SergeyP.akaazure - mi dispiace per quello. Il mio blog è defunto - ho rimosso il link ..
Steve Midgley il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.