Apa alat penggabungan visual terbaik untuk Git? [Tutup]

599

Apa alat terbaik untuk melihat dan mengedit gabungan di Git? Saya ingin mendapatkan tampilan penggabungan 3-arah, dengan "milikku", "milik mereka" dan "leluhur" di panel terpisah, dan panel "keluaran" keempat.

Juga, instruksi untuk menggunakan alat tersebut akan sangat bagus. (Saya masih belum menemukan cara memulai kdiff3 sedemikian rupa sehingga tidak memberi saya kesalahan.)

OS saya adalah Ubuntu.

andy
sumber
15
"Tapi sekarang tidak diizinkan" ya, itu sebabnya aku benci stackoverflow saat ini. Itu terlalu kering dan membosankan tanpa pertanyaan-pertanyaan itu.
István Ujj-Mészáros
17
Apakah ada situs stackexchange di mana jenis pertanyaan ini diizinkan? Jika tidak, harus ada ..
fzzylogic
16
Sepertinya sudah waktunya untuk Stack Overflow baru di mana pertanyaan seperti itu diperbolehkan. Jelas karena banyak yang menyatakan pertanyaan semacam itu sangat berharga bagi begitu banyak orang sehingga sangat bodoh untuk menutupnya. Saya pikir Anda sudah membahas tentang birokrasi. Bagaimana kalau Anda membuat jajak pendapat tentang masalah ini dan melihat apa yang "pelanggan" Anda inginkan; P
Piotr Owsiak
9
Ada softwarerecs.stackexchange.com
Philipp Wendler
6
Masalahnya: softwarerec tidak berguna karena para ahli ada di sini, bukan di sana.
reinierpost

Jawaban:

337

Meld adalah alat diff / merge gratis, open-source, dan lintas-platform (UNIX / Linux, OSX, Windows).

Berikut cara menginstalnya:

pengguna20805
sumber
53
siapa yang peduli dengan OS yang digunakan penulis asli ?, pertanyaannya cukup umum sehingga menarik bagi semua orang yang mencarinya. Dan 3-way diff adalah ketika Anda benar-benar melihat 4 panel dengan tes; merge-base / local / remote / result
Evgeny
16
meldmembosankan dengan diffs kompleks, mampu memilih pilihan seperti chose b for all unresolved conflictsjauh lebih baik daripada harus manual klik tanda panah yang benar untuk setiap cowok di meld. Selain itu, kemampuan untuk menggabungkan ke dalam file output tertentu daripada mengedit file input yang ada sangat berharga untuk membuat cadangan dari kegagalan nerges.
Mark Booth
3
@naxa Meld sekarang memiliki pemasang Windows: code.google.com/p/meld-installer
Roman
6
kdiff3 membiarkan Anda melihat 4 tampilan, berbaur hanya memungkinkan 3 tampilan. Meld bukan alat penggabung nyata, ini adalah alat diff karena tidak menunjukkan tampilan versi dasar.
Akira Yamamoto
4
Meld mengerikan, terutama untuk penggabungan. Ia tidak memiliki opsi untuk "mentransfer secara otomatis perubahan yang tidak bertentangan", membuat setiap gabungan sangat menyakitkan.
Cerin
91

Anda dapat mengonfigurasi alat gabungan Anda sendiri untuk digunakan dengan " git mergetool".

Contoh:

  git config --global merge.tool p4merge
  git config --global mergetool.p4merge.cmd p4merge '$BASE $LOCAL $REMOTE $MERGED'
  git config --global mergetool.p4merge.trustExitCode false

Dan saat Anda melakukannya, Anda juga dapat mengaturnya sebagai difftool Anda untuk " git difftool":

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

Perhatikan bahwa di Unix / Linux Anda tidak ingin $BASEparsing sebagai variabel oleh shell Anda - itu seharusnya benar-benar muncul di file ~ / .gitconfig Anda agar ini berfungsi.

Evgeny
sumber
10
Perhatikan bahwa karena p4merge (sekarang) adalah salah satu dari mergetool git yang didukung secara resmi, seharusnya tidak perlu membuang kotoran dengan alat ini. variabel .cmd lagi.
Matt Ball
2
Pastikan Anda menggunakan kutipan yang benar: stackoverflow.com/a/1217994/3543437
kayleeFrye_onDeck
64

Beyond Compare 3 , favorit saya, memilikifungsi penggabungan dalam edisi Pro . Hal yang baik dengan gabungannya adalah membiarkan Anda melihat semua 4 tampilan: dasar, kiri, kanan, dan hasil gabungan. Ini agak kurang visual daripada P4V tetapi jauh lebih dari WinDiff. Ini terintegrasi dengan banyak kontrol sumber dan bekerja pada Windows / Linux. Ini memiliki banyak fitur seperti aturan lanjutan, edisi, perataan manual ...

Perforce Visual Client ( P4V ) adalah alat gratis yang menyediakan salah satu antarmuka paling eksplisit untuk penggabungan (lihat beberapa tangkapan layar ). Bekerja pada semua platform utama. Kekecewaan utama saya dengan alat itu adalah jenis antarmuka "read-only" . Anda tidak dapat mengedit file secara manual dan Anda tidak dapat menyelaraskan secara manual.

PS: P4Merge termasuk dalam P4V. Perforce mencoba membuatnya agak sulit untuk mendapatkan alat mereka tanpa klien mereka.

SourceGear Diff / Merge mungkin menjadi pilihan alat gratis kedua saya. Periksa bahwa gabungkan tangkapan layar dan Anda akan melihatnya setidaknya memiliki 3 tampilan.


Meld adalah alat gratis yang lebih baru yang saya lebih suka SourceGear Diff / Merge : Sekarang ini juga berfungsi pada sebagian besar platform (Windows / Linux / Mac) dengan keuntungan yang berbeda secara native mendukung beberapa kontrol sumber seperti Git . Jadi Anda dapat memiliki beberapa perbedaan riwayat pada semua file yang lebih sederhana. Tampilan penggabungan (lihat tangkapan layar ) hanya memiliki 3 panel, seperti SourceGear Diff / Merge . Ini membuat penggabungan agak sulit dalam kasus-kasus kompleks.

PS: Jika satu alat suatu hari mendukung penggabungan 5 tampilan , ini akan sangat luar biasa, karena jika Anda memilih komit di Git Anda benar-benar tidak memiliki satu basis tetapi dua. Dua basis, dua perubahan, dan satu hasil penggabungan.

Wernight
sumber
7
Menggabungkan Perforce hebat. Ini memiliki alat penggabungan 4 panel, yang benar-benar membantu: Milik Anda, Milik mereka, Pangkalan Bersama, Baru
Gal
4
P4 juga digunakan oleh Google .
Wernight
5
Anda dapat menginstal hanya P4Merge kustom tanpa harus dipaksa.
Dirk Bester
6
Versi terbaru p4merge tidak memiliki antarmuka "read-only". Anda dapat mengedit file yang digabungkan di panel bawah.
Ian Ni-Lewis
1
Ini adalah jawaban dan diskusi yang sangat bagus. Terima kasih sudah berbagi!
Mark Good
45

Saya mendengar hal-hal baik tentang kdiff3.

kryger
sumber
4
+1: kdiff3 jauh lebih unggul daripada berbaur dan juga didukung oleh git.
Mark Booth
3
kdiff3memiliki lebih banyak fitur tetapi meldmemiliki UI yang lebih baik. Menurut pendapat saya, meldlebih baik untuk menggabungkan mudah di mana fitur yang disediakan oleh meldcukup. Ingatlah untuk mencoba diffusejuga.
Mikko Rantalainen
kdiff3 membiarkan Anda melihat 4 tampilan, berbaur hanya memungkinkan 3 tampilan. Meld bukan alat penggabung nyata, ini adalah alat diff karena tidak menunjukkan tampilan versi dasar.
Akira Yamamoto
43

Alat penggabungan visual favorit saya adalah SourceGear DiffMerge

  • Ini gratis.
  • Cross-platform (Windows, OS X, dan Linux).
  • Bersihkan visual UI
  • Semua fitur berbeda yang Anda harapkan (Diff, Merge, Folder Diff).
  • Antarmuka baris perintah.
  • Pintasan keyboard yang dapat digunakan.

Antarmuka pengguna

Luke
sumber
3
bagaimana Anda mengkonfigurasinya agar bekerja dengan git?
Ryan Lundy
2
@Kyralessa Lihat stackoverflow.com/questions/255202/…
Luke
2
Terima kasih telah memperkenalkannya kepada saya !! : D Alat ini bersih dan membutuhkan waktu lebih sedikit untuk menginstal dan bekerja daripada berbaur. Saya menghabiskan setengah jam mencoba menginstal berbaur. Tapi yang ini saya lakukan dalam 5 menit !!
om39a
2
Catatan: diffmerge tampaknya tidak memiliki fitur penggabungan 3 arah. Saya meninggalkannya setelah mencobanya selama beberapa minggu untuk alasan itu
StormeHawke
Ini alat yang bagus dan juga dapat membandingkan folder. Masalahnya agak lambat (MacBookPro 15 2014, MacOS Catalina)
emKaroly
33

vimdiff

Setelah Anda telah belajar vim (dan IMHO Anda harus), vimdiff hanyalah satu lagi konsep ortogonal kecil yang indah untuk dipelajari. Untuk mendapatkan bantuan online di vim:

:help vimdiff 

Pertanyaan ini mencakup bagaimana cara menggunakannya: Bagaimana cara saya menggunakan vimdiff untuk menyelesaikan konflik?

masukkan deskripsi gambar di sini

Jika Anda terjebak di zaman kegelapan penggunaan mouse, dan file yang Anda gabungkan tidak terlalu besar, saya sarankan berbaur.

Andrew Wagner
sumber
<3 vimdiff, aku tidak tahu cara meyakinkan svn agar aku menggunakannya sebagai alat 'menggabungkan'.
klokop
gvimdiff juga berfungsi dengan baik untuk tujuan ini.
new123456
2
Menggunakan plugin Fugitive membuatnya lebih mudah! vimcasts.org/episodes/…
Erik Westrup
Kalau saja ada cara untuk melihat dengan jelas perbedaan antara local / base dan base / remote.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
24

Anda dapat mencoba P4Merge .

Visualisasikan perbedaan antara versi file dengan P4Merge. Atasi konflik yang dihasilkan dari pengembangan paralel atau bersamaan melalui kode warna.

Fitur-fiturnya meliputi:

  • Sorot dan edit perbedaan file teks
  • Pilih untuk memasukkan atau mengabaikan ujung garis atau spasi putih
  • Kenali konvensi akhir baris untuk Windows (CRLF), Mac (CR), dan Unix (LF)
  • Gunakan parameter baris perintah dan luncurkan dari aplikasi non-Perforce
  • Tampilkan nomor baris saat membandingkan dan menggabungkan file
  • Kecualikan file yang dimodifikasi, unik, atau tidak berubah
  • Saring file dengan nama atau ekstensi
  • Atur aset yang dimodifikasi dalam hierarki file / folder yang familier
  • Bandingkan JPEG, GIF, TIFF, BMP, dan format file lainnya
  • Perpanjang menggunakan Qt API
  • Overlay gambar atau tampilan berdampingan
  • Sorot perbedaan pada gambar yang overlay
Ron
sumber
terbaik yang pernah saya lihat sejauh ini. dengan mudah menyelesaikan konflik dengan memilih perubahan dari daftar pandangan tiga arah
chovy
Tautan baru: perforce.com/downloads/helix#product-10
Brill Pappin
Tautan perbaikan perforce.com/downloads/helix#clients
Al-Mothafar
Mulai menggunakannya hari ini dan itu cukup intuitif.
Sumberdaya
22

IntelliJ IDEA memiliki yang canggih alat resolusi konflik gabungan yang dengan tongkat ajaib Resolve, yang sangat menyederhanakan penggabungan:

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

niutech
sumber
2
Alat penggabungan ide hanya brilian. bahkan tersedia dalam edisi komunitas Idea yang berarti Anda dapat menggunakannya secara gratis sebagai alat penggabungan tingkat lanjut - inilah yang saya lakukan (untuk sebagian besar kasus saya menggunakan VSCode tempat saya bekerja dan saya menggunakan Idea untuk kasus penggabungan yang sulit). VSCode melakukan pekerjaan yang cukup baik, dan kadang-kadang bahkan lebih baik daripada Ide. tetapi untuk kasus-kasus sulit tata letak 3-panel mereka adalah alat terbaik yang pernah saya lihat
godblessstrawberry
Aku benci bagaimana 'file sumery' scroll bar TIDAK bersama-sama! Alasan utama saya suka difus!
anthony
16

Diffuse adalah favorit saya tetapi tentu saja saya bias. :-) Sangat mudah digunakan:

$ diffuse "mine" "output" "theirs"

Diffuse adalah alat penggabungan teks kecil dan sederhana yang ditulis dengan Python. Dengan Diffuse, Anda dapat dengan mudah menggabungkan, mengedit, dan meninjau perubahan pada kode Anda. Diffuse adalah perangkat lunak gratis.

kenorb
sumber
2
Saya sangat suka difus, dan saya tidak bias.
jturcotte
2
@Derrick Moser: diffuseterlihat sangat bagus. Saya hanya mencobanya sekarang dan itu lebih baik daripada diffing kdiff3. Tapi, saya mencoba menggunakannya git mergetooldan membuka 4 file di sebelah satu sama lain (lokal, hasil gabungan, jarak jauh, basis), dan layar saya tidak cukup lebar untuk itu. Saya harus melakukan banyak scroll horizontal. kdiff3 hanya menampilkan 3 bersebelahan dan hasilnya di bagian bawah jendela.
yairchu
diffuse memiliki beberapa opsi gabungan dibandingkan dengan berbaur (memungkinkan untuk bergabung dengan kedua versi daripada memilih salah satu dari mereka).
Audrius Meskauskas
difus bekerja di luar kotak pada windows, untuk membandingkan 2 folder, dengan repo CVS, dengan repo Git, menggabungkan git merge konflik. File diff difuse terbuka di tab dalam satu jendela. Saya beralih ke difuse (setelah menggunakan edac emacs (terlalu banyak fitur, berguna di 90-an)> vimdiff (penekanan tombol plugin rumit)> p4merge> araxis (kepemilikan)> meld (terlalu lambat), tkdiff (hanya cvs)> kdiff3 (bagus , fitur regex diabaikan baik)> winmerge (baik)> difus (cepat, portabel, berfungsi seperti yang diharapkan)) pertama kali saya mencoba difus.
mosh
Bagaimana cara mengubah bahasa GUI di Diffuse?
zach
14

Araxis Merge http://www.araxis.com/merge Saya menggunakannya di Mac OS X tapi saya sudah menggunakannya di windows ... ini tidak gratis ... tetapi memiliki beberapa fitur bagus ... lebih bagus di windows sekalipun.

Clintm
sumber
9

Anda dapat mengubah alat yang digunakan oleh git mergetool dengan melewatkan git mergetool -t=<tool>atau --tool=<tool>. Untuk mengubah default (dari vimdiff) gunakan git config merge.tool <tool>.

user35149
sumber
6

Jadi untuk penggabungan git, Anda dapat mencoba:

  • DiffMerge untuk membandingkan dan menggabungkan file secara visual pada Windows, OS X dan Linux.

    DiffMerge

  • Meld , adalah alat diff dan penggabungan visual.

    Meld adalah alat penggabungan dan penggambaran visual

  • KDiff3 , program diff and merge), yang membandingkan atau menggabungkan 2 atau 3 file input teks / dir.
  • opendiff(bagian dari Xcode Tools pada macOS), sebuah utilitas baris perintah yang meluncurkan aplikasi FileMerge dari Terminal untuk membandingkan secara grafis file atau direktori, termasuk penggabungan .
kenorb
sumber
2
git config --global merge.tool opendiffbekerja paling baik untuk saya
James Matthew Mudgett
5

Saya sudah mencoba banyak alat yang disebutkan di sini dan tidak satupun yang saya cari.

Secara pribadi, saya telah menemukan Atom menjadi alat yang hebat untuk memvisualisasikan perbedaan dan resolusi konflik / penggabungan.

Adapun penggabungan, tidak ada tiga tampilan tetapi semuanya digabung menjadi satu dengan highlight berwarna untuk setiap versi. Anda dapat mengedit kode secara langsung atau ada tombol untuk menggunakan versi potongan mana saja yang Anda inginkan.

Saya bahkan tidak menggunakannya sebagai editor atau IDE lagi, hanya untuk bekerja dengan git. UI bersih dan sangat mudah, ditambah lagi sangat dapat disesuaikan.

  • Anda dapat memulainya dari baris perintah dan mengirimkan satu file yang ingin Anda buka, atau menambahkan folder proyek Anda (git repo).

    • Saya juga akan merekomendasikan manajer proyek sebagai cara yang sangat nyaman untuk menavigasi antar proyek tanpa mengisi tampilan hierarki Anda.
  • Satu-satunya masalah yang saya miliki adalah menyegarkan - ketika bekerja dengan atom repositori besar bisa lambat untuk memperbarui perubahan yang Anda buat di luar itu. Saya selalu menutupnya ketika saya selesai, dan kemudian membuka kembali ketika saya ingin melihat perubahan saya / komit lagi. Anda juga dapat memuat ulang jendela dengan ctrl + shift + f5, yang hanya membutuhkan waktu satu detik.

Dan tentu saja gratis.

Sean McCallum
sumber
3

Saya menggunakan alat yang berbeda untuk menggabungkan dan membandingkan:

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

Fist bisa dipanggil oleh:

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

Kedua disebut saat Anda menggunakan git mergetool.

efhemerr
sumber
2

Anda dapat menginstal ECMerge diff / merge tool di Linux, Mac atau Windows Anda. Ini sudah dikonfigurasikan sebelumnya di Git, jadi hanya menggunakan git mergetoolakan melakukan pekerjaan itu.

Armel
sumber
2

Jika Anda menggunakan visual studio , alat bawaan Team Explorer adalah alat yang sangat bagus untuk menyelesaikan konflik git merge.

Charith
sumber
0

gitx http://gitx.frim.nl/

Beberapa bug saat bekerja dengan set komit besar tetapi bagus untuk menelusuri perubahan dan memilih perubahan berbeda ke panggung dan kemudian melakukan.

Blake Lucchesi
sumber