Qual è il miglior strumento di unione visuale per Git?


481

Qual è lo strumento migliore per visualizzare e modificare un'unione in Git? Mi piacerebbe avere una vista unione in 3 direzioni, con "mio", "loro" e "antenato" in pannelli separati e un quarto pannello "output".

Inoltre, le istruzioni per invocare detto strumento sarebbero grandi. (Non ho ancora capito come avviare kdiff3 in modo tale da non darmi un errore.)

Il mio sistema operativo è Ubuntu.

  0

Per quale sistema operativo si desidera ricevere istruzioni? 26 set. 082008-09-26 00:45:49

+2

L'uso di kdiff3 con "git mergetool" dovrebbe funzionare correttamente. Non ho avuto problemi con questo. 30 set. 102010-09-30 14:05:09

  0

Al solo diff, esegui 'kdiff3 file1 file2a' o' kdiff3 file1 file2a file2b' (questo presuppone che 'file1' sia un antenato comune di' file2a' e 'file2b'), e di fondere in tre modi con quei file e l'output del file unito in 'file3' fa' kdiff3 -b file1 file2a file2b -o file3'. 02 mar. 112011-03-02 18:45:14

+3

"Ma ora non è permesso" sì, è per questo che odio lo stackoverflow al giorno d'oggi. È troppo secco e noioso senza queste domande. 03 mar. 162016-03-03 00:50:21

  0

Se questa domanda fosse aperta, vorrei fare una risposta suggerendo [xxdiff] (http://furius.ca/xxdiff/). 4 display di file e diff di livello di parola su ogni riga 02 lug. 162016-07-02 12:05:30

+2

Esiste un sito stackexchange in cui questo tipo di domanda è consentito? In caso contrario, dovrebbe esserci .. 07 lug. 162016-07-07 00:58:34

+2

Sembra che sia giunto il momento per un nuovo Overflow dello stack in cui sono consentite tali domande. Chiaramente come molti hanno affermato tali domande sono preziose per così tante persone che è semplicemente stupido chiuderle. Penso che tu abbia superato la burocrazia. Che ne dici di fare un sondaggio su questo problema e vedere cosa vogliono i tuoi "clienti" P 09 set. 162016-09-09 11:49:23

+1

C'è https://softwarerecs.stackexchange.com/ 13 feb. 172017-02-13 16:34:49

  0

Dipende. kdiff3 e p4merge sono entrambi gratuiti e funzionano facilmente con git. kdiff3 ha la funzione --auto che è utile per lo scripting. Ho trovato che p4merge è significativamente migliore per risolvere automaticamente i conflitti. 06 apr. 172017-04-06 17:23:19

  0

Il problema: i softwarerec sono inutili perché gli esperti sono qui, non lì. 27 giu. 172017-06-27 17:09:27

283

Meld è uno strumento diff/merge.

Ecco come installarlo su:

+2

Nessuna versione di Windows per quanto posso dire, e non usa una vista a 3 vie che significa che non si ottiene un'anteprima della versione finale. 26 set. 082008-09-26 00:45:04

+49

In effetti ha una vista a 3 vie e il poster originale sta eseguendo Linux, non Windows, quindi non vedo perché questo è un problema. 26 set. 082008-09-26 07:21:10

+48

a chi importa del sistema operativo utilizzato dall'autore originale ?, la domanda è abbastanza generale da interessare a tutti quelli che la cercano. E la differenza a 3 vie è quando vedi effettivamente 4 riquadri con test; merge-base/local/remote/result 23 gen. 112011-01-23 13:16:41

+10

'meld' è noioso con diffs complessi, essere in grado di selezionare opzioni come' choose b per tutti i conflitti irrisolti 'è molto meglio che dover fare clic manualmente sulla freccia corretta per ogni hunk in ' meld'. Inoltre, essere in grado di unire in un file di output specifico piuttosto che modificare i file di input sul posto è inestimabile per il backup di ner falliti. 02 mar. 112011-03-02 18:51:52

+17

Meld funziona bene su Windows, devi prima installare python e poi pygtk. Quindi rinomina bin/meld su meld.py e fai doppio clic su di esso. 21 apr. 112011-04-21 00:06:55

  0

La combinazione non funziona correttamente come strumento di unione con git dato che mostra marcatori di unione. 22 dic. 112011-12-22 13:38:10

+4

Meld è davvero l'opzione migliore? È brutto e non intuitivo secondo me. 04 mar. 122012-03-04 14:56:18

  0

@jnnnnn posso confermare che la combinazione sicuramente funziona su Windows. manca semplicemente l'installer. 09 ago. 122012-08-09 15:45:20

  0

Il collegamento di Ubuntu è morto ora, se potessi aggiornarlo? :) 13 feb. 132013-02-13 14:47:57

+1

@jooks http://meldmerge.org/. Meld potrebbe non essere il migliore, ma funziona benissimo per me :) 14 feb. 132013-02-14 08:03:59

+3

@naxa Meld ora ha un programma di installazione di Windows: https://code.google.com/p/meld-installer/ 18 mar. 132013-03-18 11:01:49

+2

Buon Dio, quanti anni ha? ? Fink per OS X? 26 mar. 132013-03-26 17:03:48

  0

Per Ubuntu è esattamente quello di cui avevo bisogno https://gist.github.com/fedir/7661179 26 nov. 132013-11-26 16:16:24

+2

Ora c'è un programma di installazione di Windows per la fusione (almeno di 1.8). Vai al loro sito e hanno un link a Sourceforge. Google Code è poi passato, chissà cosa succederà. Quindi, controlla il loro sito per il link. 30 apr. 142014-04-30 17:14:12

  0

Grazie amico che hai fatto la mia giornata. 13 lug. 152015-07-13 10:26:43

  0

Il link per Mac non è attivo. Eccone un'altra: http://www.alexkras.com/how-to-run-meld-on-mac-os-x-yosemite-without-homebrew-macports-or-think/ 29 set. 152015-09-29 18:02:57

+1

'mild' do not funziona bene quando si verificano conflitti in git, 'p4merge' è migliore. 04 feb. 162016-02-04 15:23:46

  0

Uso lo strumento git visual all'interno di NetBeans e funziona come un incantesimo per me. 12 apr. 162016-04-12 09:14:29

+2

kdiff3 ti consente di vedere 4 visualizzazioni, la combinazione consente solo 3 visualizzazioni. Meld non è un vero strumento di unione, è uno strumento di diff perché non mostra la vista della versione di base. 05 mag. 162016-05-05 18:44:50

  0

Nota: è necessario installare python 3.3 o successivo per l'ultimo 'meld'. 10 gen. 172017-01-10 05:36:18

+1

La fusione ha alcuni problemi. Rende davvero fastidioso fare cambiamenti "Mine then their". Ed è un po 'difficile da leggere a volte. 08 mag. 172017-05-08 15:41:38

+2

La fusione è orribile, specialmente per le unioni. Non ha alcuna opzione per "trasferire automaticamente modifiche non in conflitto", rendendo ogni fusione orribilmente dolorosa. 25 mag. 172017-05-25 22:40:13


38

mio strumento di unione visiva preferito è SourceGear DiffMerge

  • E 'gratuito.
  • multipiattaforma (Windows, OS X e Linux).
  • Interfaccia utente pulita
  • Tutte le funzioni differ che ci si aspetterebbe (Diff, Merge, Folder Diff).
  • Interfaccia della riga di comando.
  • Tasti di scelta rapida utilizzabili.

User interface

+3

come lo configuri per funzionare con git? 29 mar. 112011-03-29 21:59:56

  0

Nota, download gratuito. 22 feb. 122012-02-22 09:38:51

+2

Grazie per avermelo presentato !! : D Questo strumento è pulito e ha richiesto meno tempo per l'installazione e il lavoro rispetto alla fusione. Trascorro mezz'ora cercando di installare la fusione. Ma questo l'ho fatto in 5 minuti !! 10 mar. 142014-03-10 16:03:05

+1

Nota: la differenza non sembra avere una funzione di unione a 3 vie. Lo sto abbandonando dopo averlo provato per un paio di settimane per questo motivo 10 ott. 142014-10-10 15:30:36


34

Ho sentito cose positive su kdiff3, sembra esserci tra ciò e la fusione (che un altro poster già suggerisce STED).

+3

+1: kdiff3 è di gran lunga superiore alla combinazione ed è anche supportato nativamente da git. 02 mar. 112011-03-02 18:37:42

+3

'kdiff3' ha molte più funzioni ma' meld' ha un'interfaccia utente migliore. A mio parere, 'meld' è meglio per unioni facili dove le funzionalità fornite da' meld' sono sufficienti. Ricordati di provare anche 'diffuse'. 07 ago. 132013-08-07 10:03:06

  0

kdiff3 ti consente di vedere 4 visualizzazioni, la combinazione consente solo 3 visualizzazioni. Meld non è un vero strumento di unione, è uno strumento di diff perché non mostra la vista della versione di base. 05 mag. 162016-05-05 18:41:53


7

Se siete solo in cerca di uno strumento diff paragoni è abbastanza piacevole: http://www.scootersoftware.com/moreinfo.php


6

È possibile modificare lo strumento usato da git mergetool passando git mergetool -t=<tool> o --tool=<tool>. Per modificare l'impostazione predefinita (da vimdiff) utilizzare git config merge.tool <tool>.


15

Diffuse è il mio preferito ma ovviamente sono di parte. :-) E 'molto facile da usare:

$ diffuse "mine" "output" "theirs" 

Diffuse è un piccolo e semplice strumento di testo merge scritto in Python. Con Diffuse puoi facilmente unire, modificare e rivedere le modifiche al tuo codice. Diffuso è un software gratuito.

+1

Mi piace molto diffondere, e non sono di parte. 11 set. 092009-09-11 13:16:01

+2

@Derrick Moser: 'diffuse' sembra molto bello. L'ho appena provato e ha fatto una differenza rispetto a 'kdiff3'. Ma, sto provando a usarlo con 'git mergetool' e apre 4 file uno accanto all'altro (locale, unione-risultato, remoto, base), e il mio schermo non è abbastanza ampio per quello. Ho dovuto fare un sacco di scroll orizzontali. kdiff3 mostra solo 3 uno accanto all'altro e il risultato nella metà inferiore della finestra. 09 dic. 102010-12-09 09:54:08

  0

diffuse ha alcune opzioni di unione aggiuntive rispetto a meld (consente di unire entrambe le versioni piuttosto che sceglierne una). 26 apr. 132013-04-26 15:24:50

  0

diffuse funziona fuori dalla scatola su Windows, per confrontare 2 cartelle, con repo CVS, con repo Git, unendo i conflitti di git merge. I file diff diffusi si aprono in schede in un'unica finestra. Sono passato a diffondere (dopo aver usato l'ediff di emacs (troppe funzioni, utili negli anni '90)> vimdiff (complicate combinazioni di tasti)> p4merge> araxis (proprietarie)> meld (troppo lento), tkdiff (solo cvs)> kdiff3 (buono , buona regex ignora le caratteristiche)> winmerge (buono)> diffuso (veloce, portatile, funziona come previsto)) la prima volta che ho provato la diffusione. 13 feb. 182018-02-13 02:41:07


-1

GitX http://gitx.frim.nl/

Alcuni bug quando si lavora con grande commettere set ma è ottimo per la navigazione attraverso i cambiamenti e raccogliendo diversi cambiamenti per mettere in scena e poi commettere.

  0

gitx fa solo diff, giusto? 16 gen. 102010-01-16 01:14:05

+4

Non disponibile in Ubuntu 13 set. 102010-09-13 14:03:21


19

Si può provare P4Merge.

visualizzare le differenze tra le versioni di file con P4Merge. Risolvi i conflitti derivanti dallo sviluppo parallelo o simultaneo tramite la codifica dei colori.

Le caratteristiche includono:

  • Evidenziare e modificare il testo differenze di file
  • scegliere di includere o ignorare fine riga o spazi bianchi
  • Riconoscere terminatori di riga per Windows (CRLF), Mac (CR) e Unix (LF)
  • Utilizzare i parametri della riga di comando e avviare da applicazioni non Perforce
  • Visualizza numeri di riga quando file fusione confronto e
  • escludere i file che vengono modificati, unico, o invariati
  • Filtrare i file per nome o estensione
  • organizzare attività in gerarchia di file/cartelle familiare modificata
  • Confrontare JPEG, GIF, TIFF, BMP, e altri formati
  • estensione utilizzando l'API Qt
  • immagini ricopertura o visualizzazione side-by-side
  • differenze revisioni sullo immagini sovrapposte
  0

il migliore che ho visto finora. risolvere facilmente i conflitti selezionando la modifica dall'elenco della vista a tre vie 29 ago. 152015-08-29 10:11:36

  0

Nuovo collegamento: https://www.perforce.com/downloads/helix#product-10 30 nov. 152015-11-30 15:58:14

  0

Correzione collegamento https://www.perforce.com/ download/helix # clients 23 mar. 172017-03-23 10:56:49


77

È possibile configurare il proprio strumento di unione da utilizzare con "git mergetool".

Esempio:

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 mentre si è in esso, è possibile anche configurarlo come difftool per "git difftool":

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

Si noti che in Unix/Linux si don' Voglio che lo $BASE venga analizzato come variabile dalla tua shell: dovrebbe effettivamente apparire nel tuo file ~/.gitconfig perché funzioni.

+1

P4Merge lo fa per me. 16 giu. 102010-06-16 07:42:08

+8

Nota che, dal momento p4merge è (ora) uno dei mergetools git ufficialmente supportati, non dovrebbe essere necessario fare muck con lo strumento *. *. Cmd più variabile. 03 mag. 112011-05-03 15:52:46

+1

Assicurarsi che si sta utilizzando corretta citazione: http://stackoverflow.com/a/1217994/3543437 21 mar. 162016-03-21 23:58:22


11

Araxis Merge http://www.araxis.com/ Lo sto usando su Mac OS X ma l'ho usato su Windows ... non è gratuito ... ma ha alcune caratteristiche interessanti ... più bello su Windows però.


1

È possibile installare ECMerge diff/merge tool su Linux, Mac o Windows. È preconfigurato in Git, quindi basta usare git mergetool per eseguire il lavoro.


57

Beyond Compare 3, il mio preferito, ha una funzionalità merge nell'edizione Pro. La cosa buona con la sua unione è che ti consente di vedere tutte e 4 le viste: base, sinistra, destra e risultato unito. È un po 'meno visivo di P4V ma molto più di WinDiff. È integrates with many source control e funziona su Windows/Linux. Ha molte funzioni come regole avanzate, edizioni, allineamento manuale ...

The Perforce Visual Client (P4V) è uno strumento gratuito che fornisce una delle interfacce più esplicite per la fusione (vedere some screenshots). Funziona su tutte le principali piattaforme.La mia principale discrepanza con questo strumento è il suo tipo di interfaccia "sola lettura" . Non è possibile modificare manualmente i file e non è possibile allineare manualmente.

PS: P4Merge è incluso nel P4V. Perforce cerca di rendere un po 'difficile ottenere il proprio strumento senza il proprio client.

SourceGear Diff/Merge potrebbe essere la mia seconda scelta di strumenti gratuiti. Verifica l'unione screens-shot e vedrai che ha almeno 3 visualizzazioni.


Meld è uno strumento più recente gratuito che preferirei SourceGear Diff/Merge: Ora è anche lavorando sulla maggior parte delle piattaforme (Windows/Linux/Mac), con il vantaggio di supportare nativamente alcune controllo sorgente come Git. Quindi è possibile avere un po 'di cron history su tutti i file molto più semplici. La vista unione (vedere screenshot) ha solo 3 riquadri, come SourceGear Diff/Merge. Questo rende la fusione un po 'più difficile nei casi complessi.

PS: Se uno strumento un giorno supporta 5 visualizzazioni che uniscono, questo sarebbe davvero fantastico, perché se si scelgono i commit in Git non si ha davvero una base ma due. Due basi, due modifiche e una fusione risultante.

+6

Perforce Merge è grande. Ha uno strumento di unione 4 riquadro, che aiuta veramente: Distinti, Loro, Common Base, New 24 mag. 112011-05-24 00:17:03

+2

P4 è anche [utilizzato da Google] (http://www.quora.com/What-version-control-system-does- Google-uso-e-perché). 02 ago. 112011-08-02 08:03:16

+3

È possibile installare in modo personalizzato solo P4Merge senza il resto della perfor- mance. 10 mag. 122012-05-10 22:19:44

+4

L'ultima versione di p4merge non ha l'interfaccia di "sola lettura". È possibile modificare il file unito nel riquadro inferiore. 21 nov. 122012-11-21 01:13:41

  0

Questa è davvero una grande risposta e discussione. Grazie per aver condiviso! 17 mar. 152015-03-17 22:04:39


20

vimdiff

Una volta che hai hai imparato vim (e secondo me si dovrebbe), vimdiff è solo un altro bel po 'di concetto ortogonale da imparare. Per ottenere la guida in linea in vim:

:help vimdiff 

Se sei bloccato in tempi bui di utilizzo del mouse, ed i file che si sta fusione non sono molto grandi, vi consiglio fusione.

  0

<3 vimdiff, non riesco a capire come convincere svn a farmi usare come uno strumento 'unione'. 20 gen. 112011-01-20 18:00:16

  0

gvimdiff funziona anche bene per questo scopo. 21 lug. 112011-07-21 11:19:50

+1

L'uso del plugin Fugitive rende ancora più semplice! http://vimcasts.org/episodes/fugitive-vim-resolving-merge-conflicts-with-vimdiff/ 20 gen. 152015-01-20 09:21:00


5

IntelliJ IDEA ha un sofisticato merge conflict resolution tool con la bacchetta magica Resolve, che ha notevolmente semplifica la fusione:

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


0

Se si utilizza Visual Studio, Team Explorer costruito in strumento è molto bello strumento per risolvere i conflitti di merge.


0

Così, per l'unione git, si può provare:

  • DiffMerge per confrontare visivamente e unire file su Windows, OS X e Linux.

    DiffMerge

  • Meld, è un diff visivo e strumento di unione.

    Meld is a visual diff and merge tool

  • KDiff3, un diff e unire il programma), che compara o fonde 2 o 3 di testo di input file/dirs.
  • opendiff (parte di Xcode Tools su macOS), un'utilità da riga di comando che avvia l'applicazione FileMerge da Terminal per confrontare graficamente file o directory, incluso merging.

1

Ho provato un sacco di strumenti menzionati qui e nessuno di loro è stato proprio quello che sto cercando.

Personalmente, ho trovato Atom per essere un ottimo strumento per visualizzare le differenze e la risoluzione/fusione dei conflitti.

Come per la fusione, non ci sono tre viste ma è tutto combinato in uno con l'evidenziazione colorata per ogni versione. Puoi modificare il codice direttamente o ci sono pulsanti per utilizzare qualsiasi versione di quello snippet che desideri.

Non lo uso più nemmeno come editor o IDE, solo per lavorare con git. Interfaccia utente pulita e molto semplice, in più è altamente personalizzabile.

  • Si può iniziare dalla riga di comando e passare in un unico file che si desidera aperto a, o aggiungere la vostra cartella del progetto (Git pronti contro termine).

    • Auspico inoltre project-manager come un modo molto conveniente per navigare tra i progetti senza riempire la tua vista ad albero.
  • L'unico problema che ho riscontrato è l'aggiornamento: quando si lavora con repository di grandi dimensioni atom può essere lento ad aggiornare le modifiche apportate al di fuori di esso. Lo chiudo sempre quando ho finito e poi riapro quando voglio vedere di nuovo le mie modifiche/commit. Puoi anche ricaricare la finestra con Ctrl + Maiusc + F5, che richiede solo un secondo.

Ed è ovviamente gratuito.


0

posso utilizzare diversi strumenti per la fusione e confrontare:

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

Pugno potrebbe essere chiamato da:

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

secondo si chiama quando si utilizza git mergetool.