Apa alat penggabungan tiga arah terbaik? [Tutup]

272

Subversi, Git, Mercurial, dan lainnya mendukung penggabungan tiga arah (menggabungkan tambang, milik mereka, dan revisi "basis") dan mendukung alat grafis untuk menyelesaikan konflik.

Alat apa yang Anda gunakan? Windows, Mac OS X, Linux, gratis atau komersial, sebut saja.

Berikut adalah beberapa yang saya gunakan atau dengar, hanya untuk memulai percakapan:

(Saya menyadari bahwa ini seperti Best Diff Tool , tetapi berbeda karena saya secara eksplisit berfokus pada alat penggabungan tiga arah; WinMerge tidak termasuk dalam daftar, misalnya.)

Dan Fabulich
sumber
4
Sebenarnya WinMerge memang memiliki perbandingan 3 cara menggunakannya dengan alat VCS, Anda hanya perlu mengirimkan 3 file (kiri, kanan, hasil) sebagai argumen ke baris perintah dan itu berfungsi.
Zilvinas
3
Sulit untuk mengatakan apa alat penggabungan terbaik, karena itu tergantung pada faktor-faktor subjektif. Tetapi jika Anda mencari fitur yang menandai perbedaannya, coba semanticmerge.com
Daniel Peñalba
29
Bagaimana pertanyaan ini bisa ditutup sebagai tidak konstruktif? Ini memiliki 182 upvotes, 123 bintang dan 11 jawaban, jelas banyak orang berpikir itu adalah konstruktif.
HelloGoodbye
3
@Shuklaswag Bagaimana kaitannya dengan pertanyaan saya? Saya bertanya-tanya mengapa ditutup sebagai "tidak konstruktif".
HelloGoodbye

Jawaban:

167

Sumber terbuka KDiff3 , lintas platform

Antarmuka yang sama untuk Linux dan Windows, algoritma yang sangat cerdas untuk menyelesaikan konflik, ekspresi reguler untuk menyelesaikan konflik, mengintegrasikan dengan ClearCase, SVN, Git, MS Visual Studio, file gabungan yang dapat diedit, membandingkan direktori

Navigasi keyboardnya bagus: ctrl-panah untuk menavigasi diffs, ctrl-1, 2, 3 untuk melakukan penggabungan.

Juga, lihat https://stackoverflow.com/a/2434482/42473

masukkan deskripsi gambar di sini

sotto
sumber
10
Lebih banyak keuntungan dari KDiff3: antarmuka yang sama untuk Linux dan Windows, algoritma yang sangat cerdas untuk menyelesaikan konflik, ekspresi reguler untuk menyelesaikan konflik, mengintegrasikan dengan ClearCase, SVN dan Git, file gabungan yang dapat diedit, membandingkan direktori.
neves
3
@ Thomas Itu tidak benar, lihat jawaban yang lainkdiff3 untuk contoh. kdiff3akan dengan senang hati membedakan dan menggabungkan seluruh pohon direktori dan telah dilakukan selama bertahun-tahun! Beberapa alat (seperti git) hanya dapat meluncurkannya per file, tetapi alat lain (seperti lincah) dengan senang hati akan memungkinkan Anda untuk tiga cara berbeda / menggabungkan seluruh repositori.
Mark Booth
2
KDiff3 mengerikan ketika perubahan lokal dan lainnya berbeda dalam jumlah baris yang ditambahkan; jika secara lokal Anda menambahkan baris A, B dan C, tetapi perubahan lainnya hanya menambahkan A dan C, maka KDiff3 mengetahui bahwa A telah ditambahkan, kemudian menemukan B konflik dengan C, kemudian menambahkan C pula.
Neil
3
Adakah yang punya pendapat tentang jawaban ini di tahun 2016?
Shadoninja
4
Itu tidak didukung sejak 2014
Ruslan K.
106

Baru saja memeriksa P4merge sejak saya mendengarnya di artikel blog lain:

masukkan deskripsi gambar di sini

Antarmuka yang sangat apik, dan GRATIS! Saya telah menjadi pengguna setia Penggabungan Araxis, tetapi mengingat ini gratis dan mengagumkan, saya mendorong Anda untuk memeriksanya.

Dan Esparza
sumber
11
Ini tersedia untuk Windows, Mac, Linux, FreeBSD, dan Solaris 10
Grant Limberg
36
@ Art: tentu saja Anda dapat mengedit hasil gabungan di P4Merge. Saya selalu melakukannya!
Sklivvz
9
p4merge juga tidak "gratis" untuk perusahaan. Lisensi terbatas untuk penggunaan komersial.
DH4
21
@ DH4 Saya baru saja menerima E-Mail dari dukungan Perforce resmi dan P4Merge gratis untuk penggunaan komersial (saya bekerja untuk MS, tidak mendapatkan lebih banyak perusahaan daripada itu;))
Ohad Schneider
4
Tidak ada dukungan perbandingan folder di P4merge. Itu akan menjadi tambahan yang bagus untuk P4Merge.
RuntimeException
95

Beyond Compare 3 Pro mendukung penggabungan tiga arah , dan ini merupakan alat penggabungan yang cukup mengesankan. Ini komersial (tetapi layak, IMHO) dan tersedia di Windows, Linux, dan Mac OS X.

Seperti yang ditunjukkan dalam komentar, itu juga tidak mahal.

Masukkan deskripsi gambar di sini

Catatan: Jika seseorang tidak memiliki set gabungan, yaitu, menggabungkan penanda yang ada di file tujuan, Beyond Compare tidak menawarkan perbandingan / pengeditan file tiga arah. Beyond Compare mengatakan fitur itu ada di daftar mereka .

Catatan: 3-way merge adalah fitur hanya dalam edisi Pro dari Beyond Compare 3

Joshua McKinnon
sumber
16
+1 Beyond Compare mudah sepadan dengan harganya, terutama jika Anda menganggap itu fitur lain.
jamiei
2
Bagus, tetapi tidak ada dukungan untuk memilih folder
Michael Fitzpatrick
9
Michael, aku tidak yakin apa maksudmu. Beyond Compare memiliki dukungan hebat untuk folder-folder yang berbeda: scootersoftware.com/moreinfo.php .
Bruce Christensen
4
Itu jelas ditunjukkan di situs web mereka - jawaban yang diperbarui untuk menyatakan versi Pro adalah persyaratan untuk penggabungan 3 arah
Joshua McKinnon
2
Beyond Compare 4 Pro menambahkan dukungan Penggabungan Folder.
Chris Kennedy
75

Meld Diff Viewer

Saya hanya punya pengalaman bagus bekerja dengan Meld. Saya menggunakannya ketika saya harus melakukan penggabungan kode yang berantakan antar cabang. Mudah digunakan dan memiliki antarmuka yang bersih.

  • Sumber Terbuka
  • Linux, Windows dan MacOS Didukung
  • Banyak File Diff
  • Dukungan Perbandingan Tiga Arah

Di Ubuntu, instal sesederhana: sudo apt-get install meld

masukkan deskripsi gambar di sini

Elia
sumber
3
+1 Meld adalah perangkat lunak yang apik, bersih, "cukup".
Trevor Bramble
15
Meld cacat dan petunjuk visualnya menyesatkan.
aib
6
Meld bahkan tidak bekerja dengan git dengan benar.
suka
65
Meld, sayangnya, BUKAN alat penggabungan tiga arah (bahkan mereka menyatakannya di beranda). Untuk penggabungan tiga arah, Anda perlu EMPAT jendela (file dasar). Tapi saya suka berbaur, bekerja dengan baik.
lzap
8
@ lzap, sebenarnya berbaur adalah tiga arah, tapi itu tidak berdokumen dan sekitar sebulan yang lalu saya perhatikan mereka telah sepenuhnya menghapus penggabungan 3-arah: is.gd/prKX5d Jika Anda tetap menggunakan versi yang cukup lama Anda masih di semoga beruntung.
Magnus
45

vimdiff. Itu bagus. Yang Anda butuhkan hanyalah jendela selebar tiga kaki.

masukkan deskripsi gambar di sini

Paul Beckingham
sumber
11
Butuh waktu untuk mengetahui bahwa Anda dapat melakukan "gvimdiff -O branch1.txt base.txt branch2.txt merge.txt" dan gunakan ctrl + w J untuk memindahkan buffer gabungan ke bagian bawah layar. Apakah ini cara Anda menggunakannya?
Wim Coenen
Cukup banyak, kecuali saya menggunakan vim, bukan gvim.
Paul Beckingham
7
downvote, itu tidak benar-benar menyelesaikan konflik, itu hanya beda.
piotr
3
vimdiff sekarang memiliki penanganan git yang bagus untuk penggabungan 3 arah (yaitu 4 panel) - vim.wikia.com/wiki/…
Sonia Hamilton
8
@piotr vimdiff memang menyelesaikan konflik. Anda menggunakan perintah "diffg <bufferNum>" untuk membangun file yang digabungkan di panel bawah. Panel gabungan buttom adalah buffer 1 yang lain 2,3,4 di bagian atas. Untuk melompat ke perbedaan, gunakan [c dan] c. Ini di luar fungsi kotak pada debian wheezy 7.7.
ikky
37

Source Gear Diff Merge :

Cross-platform, true three-way merge dan sepenuhnya gratis untuk penggunaan komersial atau pribadi.

masukkan deskripsi gambar di sini

CMS
sumber
1
Saya telah menggunakan DiffMerge selama bertahun-tahun dan menyukainya. Namun, saya membaca posting blog ini di mana penulis melihat alat diff-merge dan mengurangi daftar ke DiffMerge dan P4Merge. Dia akhirnya menggunakan P4Merge hanya karena memiliki antarmuka yang lebih bagus. Saya baru saja mulai menggunakan P4Merge hari ini dan saya harus setuju. Secara khusus, DiffMerge tidak menunjukkan perubahan dengan baik - itu menunjukkan mereka sebagai penghapusan dan penyisipan. Ini bisa membingungkan jika ada banyak perubahan berdekatan. P4Merge menampilkannya dengan lebih baik.
Simon Tewsi
1
Saya melihat bahwa diffmerge tidak gratis , harganya $ 19
erkfel
3
@erkfel, Itu tidak benar. Pendaftaran adalah opsional dan perangkat lunak bebas untuk digunakan: "SourceGear DiffMerge adalah alat penggabungan dan penggabungan file pemenang penghargaan yang telah membantu pengembang profesional dan penggemar sejak 2007. SourceGear DiffMerge dilisensikan untuk digunakan secara gratis. Namun, dengan mendaftarkan DiffMerge Anda akan membantu mendanai pengembangan produk baru, pemeliharaan, dan dukungan. Sebagai cara berterima kasih kepada pengguna terdaftar kami dan mendorong pendaftaran tambahan, kami telah menambahkan beberapa fitur baru di 4.2 ... "(dalam teks program)
Muhd
1
Satu hal yang saya temukan berguna di DiffMerge, dibandingkan dengan P4Merge (yang sekarang saya gunakan untuk diffing dan penggabungan git), adalah bahwa ia terintegrasi dengan Windows File Explorer. Secara khusus, saya dapat mengingat file di satu folder, lalu membandingkan file yang diingat dengan yang lain di folder yang berbeda. Saya menemukan ini berguna mungkin sekali atau dua kali sebulan, di mana saya tidak perlu memindahkan dua file ke folder yang sama untuk membandingkannya (misalnya skrip SQL tidak di bawah kendali sumber).
Simon Tewsi
1
@SimonTewsi: P4Merge untuk Mac tidak mengharuskan file berada di folder yang sama. Ini memungkinkan Anda untuk menelusuri sistem file dan memilih file base, pertama, dan kedua dari mana saja di komputer.
Steve Samuels
32

Araxis Merge . Ini komersial, tetapi sangat berharga ... Ini tersedia untuk Windows dan Mac OS X.

Masukkan deskripsi gambar di sini

Dave
sumber
5
Setuju, itu yang terbaik yang pernah saya gunakan.
Dan Olson
1
Pengamatan saya: Relatif lambat saat menangani file besar sekitar 5MB.
Naga Kiran
3
+1 untuk Araxis. Salah satu dari beberapa alat saya bersedia membayar uang yang baik untuk keperluan pribadi. Segala sesuatu yang lain berantakan, membingungkan, dan artinya jika dibandingkan (pun intended).
Dan Esparza
8
Setelah menggunakan Araxis untuk waktu yang lama, perusahaan saya telah beralih ke KDiff3 karena alasan berikut: (1) Ketika penggabungan dalam Araxis dibatalkan, file masih akan ditandai sebagai diselesaikan di TortoiseHg. (2) Araxis menunjukkan campuran revisi basis & hasil gabungan di panel "Gabungkan Hasil" yang sering membingungkan. (3) Dari TortoiseHg, KDiff3 akan secara otomatis bergabung tanpa interaksi pengguna jika dapat melakukannya. (4) Algoritma penggabungan KDiff3 sepertinya melakukan pekerjaan yang lebih baik. Namun kami masih menggunakan Araxis sebagai alat perbandingan kami :)
Michael Platings
2
Seperti disebutkan dalam komentar untuk jawaban lain, alat penggabung 3 arah yang tepat memiliki 4 panel - basis, lokal, jarak jauh, dan hasil . Araxis mengonfigurasi basis dan hasil, yang dapat menyebabkan masalah.
neonblitzer
27

Algoritma resolusi konflik Kdiff3 benar-benar mengesankan.

Bahkan ketika subversi mengindikasikan konflik, Kdiff3 menyelesaikannya secara otomatis. Ada versi untuk Windows dan Linux dengan antarmuka yang sama. Dimungkinkan untuk mengintegrasikannya dengan Tortoise dan dengan shell linux Anda.

Itu ada dalam daftar perangkat lunak sumber terbuka favorit saya. Salah satu alat pertama yang saya instal di mesin apa pun.

Anda dapat mengkonfigurasinya sebagai alat diff default di Subversion, Git, Mercurial, dan ClearCase. Ini juga memecahkan hampir semua konflik ClearCase. Di Windows, ia memiliki integrasi yang bagus dengan windows explorer: pilih dua file dan klik kanan untuk membandingkannya, atau klik kanan untuk menyimpan file, lalu pilih yang lain untuk dibandingkan.

File yang digabungkan dapat diedit. Memiliki pintasan keyboard yang apik.

Anda juga dapat menggunakannya membandingkan dan menggabungkan direktori. Lihat: Kdiff3 Membandingkan direktori

Fitur lanjutan adalah menggunakan ekspresi reguler untuk mendefinisikan penggabungan otomatis.

Satu-satunya kekesalan saya adalah sedikit sulit untuk dikompilasi jika tidak ada di repositori distro favorit Anda.

neves
sumber
3
Saya setuju tentang algoritma penggabungan. Ini luar biasa canggih, dan anehnya tampaknya "tahu" apa yang ingin Anda lakukan dengan cara yang tidak bisa dilakukan alat lain. Ini secara teratur menghancurkan diff3 dan Subversion (blarg), dan bahkan dapat membantu dengan gabungan Git.
kevinarpe
di mana pintasan keyboard untuk kebagian selanjutnya dan pilih a / b / c?
Tuanku
@mylord: gunakan penundaan-Auto-Maju kecil dan pintasan Ctrl-1/2/3 untuk memilih A / B / C untuk banyak konflik.
neves
Adakah yang menggantikan KDiff3 untuk Anda? Pengguna besar, tetapi saya mendapati diri saya melihat apakah ada alternatif yang lebih baik hari ini
chrispepper1989
1
@ chrispepper1989, saya masih menggunakan KDiff3 di Git hari ini. Saya tidak pernah menemukan aplikasi penggabungan 3 arah yang secara signifikan lebih baik daripada KDiff3. P4Merge memiliki antarmuka yang lebih modern, tetapi ketika saya mengujinya Anda tidak dapat mengedit file gabungan (saya pikir Anda bisa melakukannya sekarang).
neves
13

Saya suka Ediff . Muncul built-in dengan GNU Emacs .

Untuk melakukan diff tiga arah, gunakan ediff-files3(untuk memilih tiga file) atau ediff-buffer3(untuk memilih tiga buffer yang sudah terbuka). Anda akan mendapatkan layar seperti ini:

tiga cara berbeda dalam emacs

Perhatikan higlighting perbedaan kata.

Anda dapat menekan natau puntuk pergi ke diffs berikutnya / sebelumnya, sementara abakan menyalin wilayah tersebut dari buffer (yang paling kiri) untuk buffer b (yang di tengah), dan juga untuk kombinasi dua huruf lainnya a, b, c; rbakan mengembalikan wilayah dalam buffer b. Tekan ?untuk menu bantuan cepat, atau baca manual bagus tentang penggabungan diff3 di Emacs .

jcrossley3
sumber
6
Seperti halnya saya suka ediff, saya hanya melihat dua buffer di atas ... penggabungan 3-arah seharusnya memiliki 3 atau 4 jendela: ketiganya digabung (lokal, jarak jauh dan basis leluhur bersama mereka), dan hasil gabungan akhir . Tampaknya memang ada penggabungan 3-arah dalam ediff (disebut ediff-merge-with-ancestor) tetapi saya tidak yakin apakah memiliki 3 panel atau 4, dan juga tangkapan layar di atas tidak mencerminkan hal itu.
ShreevatsaR
Diedit untuk menunjukkan diff tiga-arah @ShreevatsaR
unhammer
@ unhammer Terima kasih ini lebih baik, tetapi masih hanya menampilkan 3 windows jadi tidak jelas apakah itu benar 3-arah diff (yang akan memiliki 4 windows; lihat kdiff3 dan contoh lainnya). Jika yang ditampilkan di tangkapan layar adalah tiga hal yang digabungkan, di mana hasilnya?
ShreevatsaR
Anda secara destruktif memodifikasi satu (atau lebih!) Buffer. Itu sebabnya saya menyebutkan bahwa abakan menyalin wilayah dari buffer a ke buffer b. Saya kira belum ada versi empat-jendela ediff. (Saya tahu emergemenggunakan buffer output khusus sebagai gantinya, tetapi emerge-files-with-ancestortidak menunjukkan leluhur, hanya menggunakannya untuk menebak versi yang benar dengan melihat mana yang setuju dengan leluhur tersebut.)
unhammer
11

Ultracompare . Ini benar-benar baik, menangani file besar (lebih dari 1 GB) dengan baik, tersedia untuk Windows / Mac / Linux, dan komersial, tetapi sangat berharga.

Cuplikan layar UltraCompare Professional di Windows

Tuan
sumber
Saya tidak tahu cara mengaturnya untuk mendukung penggabungan 3-arah ... Bisakah ini menampilkan file dasar di tengah, 2 file berubah di kiri dan kanan, jadi saya bisa melihat apa yang diubah di kedua file berdasarkan pada basis mengajukan dan memiliki hasil gabungan dari 2 file yang diubah di bagian bawah? Saya menggunakan UltraCompare 17.0
Ricky
1
Sedikit googling menemukan ultraedit.com/support/tutorials-power-tips/ultracompare/… ini - berbicara tentang penggabungan 3 cara di langkah 6 penggabungan lanjutan.
MrTelly
11

Diffuse adalah alat penggabungan tiga arah yang mudah digunakan. Ini mendukung semua platform dan sistem kontrol versi yang Anda sebutkan, dan dapat membandingkan lebih dari tiga file secara bersamaan.

masukkan deskripsi gambar di sini

Jordan Ryan Moore
sumber
2
Dan itu bahkan mendukung membandingkan file N pada saat yang sama! Ini berguna jika Anda perlu membandingkan file konfigurasi dari banyak aplikasi yang homogen.
Pius Raeder
Saya menggunakan Diffuse untuk membandingkan lebih dari tiga file
mohas
6

xxdiff jika Anda berada di tanah Linux.

Masukkan deskripsi gambar di sini

Mark Harrison
sumber
4

Kesimpulannya adalah saya menemukan ECMerge sebagai produk komersial yang hebat. http://www.elliecomputing.com/products/merge_overview.asp

masukkan deskripsi gambar di sini

Saya juga setuju dengan MrTelly bahwa Ultracompare sangat bagus. Salah satu fitur yang bagus adalah ia akan membandingkan RTF dan Word docs, yang berguna ketika Anda akhirnya memprogram kata-kata dengan sales man dan mereka tidak mengelola dokumen mereka dengan benar.

Steve Midgley
sumber
Tautan pertama tidak berfungsi, ini menghasilkan 500 kesalahan. Jika sumber daya telah dipindahkan, harap sesuaikan url.
Sergey P. alias azure
@ SergeyP.akaazure - maaf tentang itu Blog saya mati - Saya sudah menghapus tautannya ..
Steve Midgley