Qual è il miglior strumento di unione visiva per Git? [chiuso]


599

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

Inoltre, le istruzioni per invocare detto strumento sarebbero ottime. (Non ho ancora capito come avviare kdiff3 in modo tale che non mi dia un errore.)

Il mio sistema operativo è Ubuntu.


15
"Ma ora non è permesso" sì, è per questo che oggi odio lo stackoverflow. È troppo secco e noioso senza quelle domande.
István Ujj-Mészáros

17
Esiste un sito stackexchange in cui è consentito questo tipo di domanda? In caso contrario, ci dovrebbe essere ..
fzzylogic

16
Sembra che sia tempo di un nuovo Stack Overflow in cui tali domande sono consentite. Chiaramente, come molti hanno affermato che tali domande sono preziose per così tante persone che è semplicemente stupido chiuderle. Penso che tu abbia esagerato con la burocrazia. Che ne dici di fare un sondaggio su questo problema e vedere cosa vogliono i tuoi "clienti"; P
Piotr Owsiak,


6
Il problema: softwarerecs è inutile perché gli esperti sono qui, non lì.
reinierpost,

Risposte:


337

Meld è uno strumento diff / merge gratuito, open source e multipiattaforma (UNIX / Linux, OSX, Windows).

Ecco come installarlo su:


53
chi se ne frega del sistema operativo utilizzato dall'autore originale ?, la domanda è abbastanza generica da interessare tutti coloro che la cercano. E la differenza a 3 vie è quando in realtà vedi 4 riquadri con test; merge-base / local / remote / result
Evgeny

16
meldè noioso con differenze complesse, essere in grado di selezionare opzioni come chose b for all unresolved conflictsè molto meglio che dover fare clic manualmente sulla freccia corretta per ogni pezzo in meld. Inoltre, essere in grado di unire in un file di output specifico anziché modificare i file di input in atto è prezioso per il backup di nerger non riusciti.
Mark Booth,

3
@naxa Meld ora ha un programma di installazione di Windows: code.google.com/p/meld-installer
Roman

6
kdiff3 ti consente di vedere 4 visualizzazioni, la combinazione consente solo 3 visualizzazioni. La combinazione non è un vero strumento di unione, è uno strumento diff poiché non mostra la vista della versione di base.
Akira Yamamoto,

4
La fusione è orribile, soprattutto per le fusioni. Non ha alcuna opzione per "trasferire automaticamente le modifiche non in conflitto", rendendo ogni unione terribilmente dolorosa.
Cerin,

91

È 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 ci sei, puoi anche configurarlo come difftool per " git difftool":

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

Nota che in Unix / Linux non vuoi che venga $BASEanalizzato come variabile dalla tua shell - dovrebbe effettivamente apparire nel tuo file ~ / .gitconfig affinché funzioni.


10
Nota che poiché p4merge è (ora) uno dei get mergetools ufficialmente supportati, non dovrebbe essere necessario confondere con lo strumento. Variabile .cmd più.
Matt Ball,

2
Assicurati di digitare correttamente citazione: stackoverflow.com/a/1217994/3543437
kayleeFrye_onDeck

64

Beyond Compare 3 , il mio preferito, ha unafunzionalità di unione 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. Si integra con molti controlli del codice sorgente e funziona su Windows / Linux. Ha molte caratteristiche come regole avanzate, edizioni, allineamento manuale ...

Perforce Visual Client ( P4V ) è uno strumento gratuito che fornisce una delle interfacce più esplicite per l'unione (vedere alcuni screenshot ). Funziona su tutte le principali piattaforme. Il mio disappunto principale con quello strumento è il suo tipo di interfaccia "sola lettura" . Non è possibile modificare manualmente i file e non è possibile allineare manualmente.

PS: P4Merge è incluso in 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. Controlla che unisci schermate e vedrai che ha almeno 3 visualizzazioni.


Meld è uno strumento gratuito più recente che preferirei SourceGear Diff / Merge : ora funziona anche sulla maggior parte delle piattaforme (Windows / Linux / Mac) con il netto vantaggio di supportare nativamente alcuni controlli del codice sorgente come Git . Quindi puoi avere un po 'di cronologia diff su tutti i file molto più semplice. La vista di unione (vedi screenshot ) ha solo 3 riquadri, proprio come SourceGear Diff / Merge . Ciò rende la fusione un po 'più difficile in casi complessi.

PS: Se uno strumento un giorno supporta l' unione di 5 viste , questo sarebbe davvero fantastico, perché se scegli la ciliegina in Git non hai davvero una base ma due. Due basi, due modifiche e una risultante unione.


7
Perforce Merge è eccezionale. Ha uno strumento di unione a 4 riquadri, che aiuta davvero: Vostro, Il loro, Base comune, Nuovo
Gal

4
P4 è utilizzato anche da Google .
Wernight,

5
È possibile installare in modo personalizzato solo P4Merge senza il resto della perforce.
Dirk Bester,

6
L'ultima versione di p4merge non ha l'interfaccia di "sola lettura". È possibile modificare il file unito nel riquadro inferiore.
Ian Ni-Lewis,

1
Questa è una risposta e una discussione davvero grandiose. Grazie per aver condiviso!
Mark Good

45

Sento cose positive di kdiff3.


4
+1: kdiff3 è di gran lunga superiore alla fusione ed è anche nativamente supportato da git.
Mark Booth,

3
kdiff3ha molte più funzioni ma meldha un'interfaccia utente migliore. A mio avviso, meldè meglio per facili fusioni in cui le funzionalità fornite da meldsono sufficienti. Ricordati di provare diffuseanche tu.
Mikko Rantalainen,

kdiff3 ti consente di vedere 4 visualizzazioni, la combinazione consente solo 3 visualizzazioni. La combinazione non è un vero strumento di unione, è uno strumento diff poiché non mostra la vista della versione di base.
Akira Yamamoto,

43

Il mio strumento di unione visiva preferito è SourceGear DiffMerge

  • È gratis.
  • Multipiattaforma (Windows, OS X e Linux).
  • UI visiva pulita
  • Tutte le funzionalità diff che ti aspetteresti (Diff, Merge, Folder Diff).
  • Interfaccia della riga di comando.
  • Scorciatoie da tastiera utilizzabili.

Interfaccia utente


3
come si configura per funzionare con git?
Ryan Lundy,


2
Grazie per avermelo presentato !! : D Questo strumento è pulito e richiede meno tempo per l'installazione e il funzionamento rispetto alla fusione. Trascorro mezz'ora cercando di installare Meld. Ma questo l'ho fatto in 5 minuti !!
om39a,

2
Nota: diffmerge non sembra avere una funzione di unione a 3 vie. Lo sto abbandonando dopo averlo provato per un paio di settimane per questo motivo
StormeHawke,

È uno strumento piacevole e può anche confrontare le cartelle. Il problema è piuttosto lento (MacBookPro 15 2014, MacOS Catalina)
emKaroly

33

vimdiff

Una volta che hai imparato vim (e IMHO dovresti), vimdiff è solo un altro bellissimo concetto ortogonale da imparare. Per ottenere assistenza online in vim:

:help vimdiff 

Questa domanda spiega come usarlo: come posso usare vimdiff per risolvere un conflitto?

inserisci qui la descrizione dell'immagine

Se sei bloccato nelle epoche buie dell'uso del mouse e i file che stai unendo non sono molto grandi, ti consiglio di combinare.


<3 vimdiff, non riesco a capire come convincere svn a permettermi di usarlo come strumento di "unione".
klokop,

gvimdiff funziona anche bene per questo scopo.
nuovo123456,

2
L'uso del plug-in Fugitive rende ancora più semplice! vimcasts.org/episodes/…
Erik Westrup il

Se solo ci fosse un modo per vedere chiaramente la differenza tra local / base e base / remote.
Ciro Santilli 13 冠状 病 六四 事件 法轮功

24

Puoi provare P4Merge .

Visualizza le differenze tra le versioni dei file con P4Merge. Risolvi i conflitti che derivano dallo sviluppo parallelo o simultaneo tramite la codifica a colori.

Le funzionalità includono:

  • Evidenzia e modifica le differenze nei file di testo
  • Scegliere di includere o ignorare le terminazioni di linea o gli spazi bianchi
  • Riconosci le convenzioni di fine linea per Windows (CRLF), Mac (CR) e Unix (LF)
  • Utilizzare i parametri della riga di comando e avviare da applicazioni non Perforce
  • Visualizza i numeri di riga durante il confronto e l'unione di file
  • Escludere file modificati, univoci o invariati
  • Filtra i file per nome o estensione
  • Organizza le risorse modificate nella gerarchia familiare di file / cartelle
  • Confronta JPEG, GIF, TIFF, BMP e altri formati di file
  • Estendi usando l'API Qt
  • Sovrapposizione di immagini o visualizzazione affiancate
  • Evidenzia le differenze sulle immagini sovrapposte

il migliore che abbia mai visto finora. risolvi facilmente i conflitti selezionando la modifica dall'elenco della vista a tre vie
chovy



Ho iniziato a usarlo oggi ed è abbastanza intuitivo.
Risorsa

22

IntelliJ IDEA ha un sofisticato strumento di risoluzione dei conflitti di unione con la bacchetta magica Resolve, che semplifica notevolmente l'unione:

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


2
Lo strumento di unione di Idea è semplicemente geniale. è anche disponibile nell'edizione della comunità di Idea, il che significa che puoi usarlo gratuitamente come strumento di unione avanzato - questo è quello che sto facendo (nella maggior parte dei casi utilizzo VSCode dove lavoro e utilizzo Idea per casi di unione difficili). Anche VSCode fa un ottimo lavoro, e talvolta anche meglio di Idea. ma per casi difficili il loro layout a 3 pannelli è lo strumento migliore che abbia mai visto
godblessstrawberry

Odio come la barra di scorrimento "riepilogo file" NON sia insieme! Il motivo principale per cui mi piace diffondere!
Anthony

16

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

$ diffuse "mine" "output" "theirs"

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


2
Mi piace molto la diffusione e non sono di parte.
jturcotte,

2
@Derrick Moser: diffusesembra molto carino. L'ho appena provato ora e ha fatto una differenza migliore rispetto a kdiff3. Ma sto provando a usarlo con git mergetoole apre 4 file uno accanto all'altro (locale, risultato della fusione, remoto, base), e il mio schermo non è abbastanza largo per quello. Ho dovuto fare molto scorrimento orizzontale. kdiff3 mostra solo 3 uno accanto all'altro e il risultato nella metà inferiore della finestra.
yairchu,

diffuse ha alcune opzioni di unione aggiuntive rispetto alla fusione (consente di unire entrambe le versioni anziché selezionarne una).
Audrius Meskauskas,

diffuse funziona immediatamente su windows, per confrontare 2 cartelle, con repository CVS, con repository Git, unendo conflitti git merge. I file diff diffusi si aprono in schede in una singola finestra. Sono passato a diffuso (dopo aver usato l'editor di emacs (troppe funzionalità, utile negli anni '90)> vimdiff (sequenze di tasti complicati plug-in)> p4merge> araxis (proprietario)> meld (troppo lento), tkdiff (solo cvs)> kdiff3 (buono , buona regex ignora le funzioni)> winmerge (buona)> diffuso (veloce, portatile, funziona come previsto)) la prima volta che ho provato a diffondere.
mosh

Come cambiare la lingua della GUI in Diffuse?
zach


9

Puoi cambiare lo strumento usato da git mergetool passando git mergetool -t=<tool>o --tool=<tool>. Per modificare il valore predefinito (da vimdiff) utilizzare git config merge.tool <tool>.



6

Quindi per l'unione git, puoi provare:

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

    DiffMerge

  • Combinare , è uno strumento di fusione e diffusione visiva.

    La combinazione è uno strumento visivo di fusione e diffusione

  • KDiff3 , un programma diff e merge), che confronta o unisce 2 o 3 file / directory di input di testo.
  • opendiff(parte di Xcode Tools su macOS), un'utilità della riga di comando che avvia l'applicazione FileMerge dal Terminale per confrontare graficamente file o directory, inclusa l' unione .

2
git config --global merge.tool opendiffha funzionato meglio per me
James Matthew Mudgett il

5

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

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

Per quanto riguarda l'unione, non ci sono tre viste ma è tutto combinato in uno con l'evidenziazione colorata per ogni versione. Puoi modificare direttamente il codice o ci sono pulsanti per utilizzare qualsiasi versione dello snippet desiderato.

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

  • È possibile avviarlo dalla riga di comando e passare in un singolo file che si desidera aprire o aggiungere la cartella del progetto (git repo).

    • Consiglierei anche il project manager come un modo molto conveniente per navigare tra i progetti senza riempire la vista ad albero.
  • L'unico problema che ho riscontrato è rinfrescante: quando si lavora con grandi repository atom può essere lento ad aggiornare le modifiche apportate al di fuori di esso. Lo chiudo sempre quando ho finito e quindi riapro quando voglio visualizzare le mie modifiche / eseguire nuovamente il commit. Puoi anche ricaricare la finestra con ctrl + shift + f5, che richiede solo un secondo.

Ed è ovviamente gratuito.


3

Uso diversi strumenti per unire e confrontare:

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

Il pugno potrebbe essere chiamato da:

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

Il secondo viene chiamato quando si utilizza git mergetool.



2

Se usi Visual Studio , lo strumento integrato di Team Explorer è uno strumento molto utile per risolvere i conflitti di git merge.


0

gitx http://gitx.frim.nl/

Alcuni bug quando si lavora con set di commit di grandi dimensioni ma è ottimo per sfogliare le modifiche e selezionare diverse modifiche allo stage e quindi eseguire il commit.

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.