Який найкращий тристоронній інструмент злиття? [зачинено]


272

Subversion, Git, Mercurial та інші підтримують тристоронні злиття (поєднуючи моє, їхнє та "базове" перегляд) та підтримують графічні інструменти для вирішення конфліктів.

Який інструмент ви використовуєте? Windows, Mac OS X, Linux, безкоштовний або комерційний, ви його називаєте.

Ось кілька, які я використовував або чув, лише для початку розмови:

(Я усвідомлюю, що це щось на зразок найкращого інструменту для розрізнення, але він відрізняється тим, що я чітко зосереджуюсь на інструментах тристороннього злиття; WinMerge виключений зі списку, наприклад.)



4
Насправді WinMerge має 3-х способне порівняння, використовуючи його з інструментами VCS, вам просто потрібно передати 3 файли (зліва, справа, результат) як аргументи в командний рядок, і це робить свою роботу.
Zilvinas

3
Важко сказати, який найкращий інструмент злиття, оскільки це залежить від суб'єктивних факторів. Але якщо ви шукаєте функцію, яка позначає різницю, спробуйте semanticmerge.com
Daniel Peñalba

28
Як можна закрити це питання як неконструктивне? Він має 182 upvotes, 123 зірок і 11 відповідей, очевидно , багато людей думають , що це конструктивно.
HelloGoodbye

3
@Shuklaswag Як це стосується мого питання? Мені було цікаво, чому це закрито як "неконструктивне".
HelloGoodbye

Відповіді:


167

KDiff3 з відкритим кодом, кросова платформа

Один і той же інтерфейс для Linux та Windows, дуже розумний алгоритм вирішення конфліктів, регулярні вирази для автоматичного вирішення конфліктів, інтеграція з ClearCase, SVN, Git, MS Visual Studio, редагований об'єднаний файл, порівняння каталогів

Клавіатура-навігація чудова: ctrl-стрілки для навігації по diff, ctrl-1, 2, 3 для злиття.

Також дивіться https://stackoverflow.com/a/2434482/42473

введіть тут опис зображення


10
Більше переваг KDiff3: той самий інтерфейс для Linux та Windows, дуже розумний алгоритм вирішення конфліктів, регулярні вирази для автоматичного вирішення конфліктів, інтеграція з ClearCase, SVN та Git, редагований об'єднаний файл, порівняння каталогів.
neves

3
@ThomasS Це не правда, побачити інший kdiff3відповідь для прикладу. kdiff3буде щасливо відрізнятися і об'єднувати цілі дерева каталогів, і це робиться протягом багатьох років! Деякі інструменти (такі як git) можуть запускати їх лише у файлі, але інші інструменти (наприклад, mercurial) із задоволенням дозволять вам триразово відрізняти / об’єднувати цілі сховища.
Марк Бут

2
KDiff3 жахливий, коли локальні та інші зміни відрізняються кількістю доданих рядків; якщо локально ви додаєте рядки A, B і C, а інша зміна лише додала A і C, KDiff3 виявляє, що додано A, потім знаходить B конфліктує з C, а потім додає C все одно.
Ніл

3
Хтось має думку щодо цієї відповіді у 2016 році?
Шадоніня

4
Це не підтримується з 2014 року
Руслан К.

106

Щойно перевірив P4merge, оскільки я чув про це в іншій статті блогу:

введіть тут опис зображення

Дуже гладкий інтерфейс, і БЕЗКОШТОВНО! Я був вірним користувачем Araxis Merge, але, вважаючи, що це безкоштовно та приголомшливо, я б радив вам це перевірити.


11
Він доступний для Windows, Mac, Linux, FreeBSD та Solaris 10
Грант Лімберг,

36
@Art: звичайно, ви можете редагувати результат злиття в P4Merge. Я роблю це постійно!
Скліввз

9
p4merge також не є "безкоштовним" для підприємства. Ліцензія обмежена для комерційного використання.
DH4

21
@ DH4 Щойно я отримав електронну пошту від офіційної підтримки Perforce, і P4Merge є безкоштовним для комерційного використання (я працюю в MS, він не отримує більше підприємств, ніж це;))
Охад Шнайдер

4
У P4merge немає підтримки порівняння папок. Це було б справді чудовим доповненням до P4Merge.
RuntimeException

95

Beyond Compare 3 Pro підтримує тристороннє злиття , і це досить вражаючий інструмент злиття. Це комерційно (але воно варте того, IMHO) і доступне в Windows, Linux та Mac OS X.

Як зазначалося в коментарі, це також недорого.

Введіть тут опис зображення

Примітка: Якщо у вас немає набору злиття, тобто маркерів злиття, що знаходяться у файлі призначення, Beyond Compare не пропонує тристороннє порівняння / редагування файлів. Більше порівняння говорить, що ця функція є у їхньому списку .

Примітка: тривимірне злиття є особливістю лише у Pro видання Beyond Compare 3


16
+1 Більше порівняння легко вартує ціни, особливо якщо врахувати, що це інші функції.
jamiei

2
Добре, але немає підтримки для вибору папок
Michael Fitzpatrick

9
Майкл, я не впевнений, що ти маєш на увазі. Beyond Compare має велику підтримку порівнюють папки: scootersoftware.com/moreinfo.php .
Брюс Крістенсен

4
Це чітко вказано на їхньому веб-сайті - оновлена ​​відповідь на стан Pro версія - це вимога для тристороннього злиття
Джошуа МакКіннон

2
Більше порівняння 4 Pro додала підтримку злиття папок.
Кріс Кеннеді

75

Meld Diff Viewer

У мене був лише хороший досвід роботи з Мелдом. Я використовую його, коли мені доводиться робити брудний злиття коду між гілками. Він простий у використанні та має чистий інтерфейс.

  • Відкрите джерело
  • Підтримуються Linux, Windows та MacOS
  • Різні файлові відмінності
  • Тристороння порівняння підтримки

В Ubuntu установка проста, як: sudo apt-get install meld

введіть тут опис зображення


3
+1 Meld гладкий, чистий, програмне забезпечення "достатньо".
Тревор Брамбл

15
Meld хибний, і його візуальні підказки вводять в оману.
аїб

6
Meld навіть не працює правильно з git.
slikts

65
Meld, на жаль, НЕ є тристороннім інструментом злиття (навіть вони констатують його на домашній сторінці). Для тристороннього злиття вам потрібні ЧОТИРИ вікна (базовий файл). Але я люблю meld, чудово працює.
lzap

8
@lzap, насправді meld був тристороннім, але він був недокументований і ще місяць тому я помітив, що вони повністю видалили тристоронній злиття: is.gd/prKX5d Якщо ви дотримуєтесь старої версії, ви все ще знаходитесь у удача, хоча.
Магнус

45

vimdiff. Це чудово. Все, що вам потрібно, це вікно завширшки три фути.

введіть тут опис зображення


11
Знадобився певний час, щоб зрозуміти, що ви можете зробити "gvimdiff -O branch1.txt base.txt branch2.txt merge.txt" і використовувати ctrl + w J для переміщення буфера злиття в нижній частині екрана. Це ти як ним користуєшся?
Вім Коен,

Досить багато, крім того, що я використовую vim, а не gvim.
Пол Бекінгем

7
downvote, це насправді не вирішує конфлікти, це просто розрізнення.
піотр

3
vimdiff тепер має приємну обробку git для тристороннього злиття (тобто 4 панелі) - vim.wikia.com/wiki/…
Sonia Hamilton

8
@piotr vimdiff дійсно вирішує конфлікти. Ви використовуєте команду "diffg <bufferNum>" для побудови об'єднаного файлу на нижній панелі. Панель злиття в нижній частині буфера 1, інші - 2,3,4 вгорі. Щоб перейти до розрізника, використовуйте [c і] c. Це неможливо функціонувати на debian wheezy 7.7.
ikky

37

Джерело злиття передач :

Міжплатформна, справжня тристороння злиття, і це абсолютно безкоштовно для комерційного та особистого використання.

введіть тут опис зображення


1
Я використовував DiffMerge роками і це сподобалось. Однак я прочитав цю публікацію в блозі, де автор розглядав інструменти розлиття та збивав список за DiffMerge та P4Merge. Він закінчив працювати з P4Merge просто тому, що він мав приємніший інтерфейс. Я щойно почав використовувати P4Merge сьогодні, і мені доведеться погодитися. Зокрема, DiffMerge не добре показує зміни - він показує їх як видалення та вставку. Це може заплутати, якщо між собою багато змін. P4Merge відображає його краще.
Саймон Тевсі

1
Я бачу, що розбіг не безкоштовний , він коштує 19 доларів
erkfel

3
@erkfel, це неправильно. Реєстрація не є обов'язковою, і програмне забезпечення є вільним у використанні: "SourceGear DiffMerge - це нагородний інструмент для розробки та об'єднання файлів, який з 2007 року допомагає професійним розробникам та хобістам. SourceGear DiffMerge ліцензується на використання безкоштовно. Однак, зареєструвавши DiffMerge ви допоможете фінансувати розробку, підтримку та підтримку нових продуктів. Як подяку нашим зареєстрованим користувачам та заохочення додаткових реєстрацій, ми додали нові функції в 4.2 ... "(у тексті програми)
Muhd

1
Одне, що мені здається корисним у DiffMerge, порівняно з P4Merge (який я зараз використовую для розмежування та об’єднання в git), - це те, що він інтегрується в Windows File Explorer. Зокрема, я можу запам'ятати файл в одній папці, а потім порівняти запам'ятований файл з іншим в іншій папці. Я вважаю це корисним, можливо, раз чи два на місяць, коли мені не потрібно переміщувати два файли в одну папку для їх порівняння (наприклад, SQL-скрипти, які не знаходяться під контролем джерела).
Simon Tewsi

1
@SimonTewsi: P4Merge для Mac не вимагає, щоб файли знаходилися в одній папці. Це дозволяє переглядати файлову систему та вибирати базові, перші та другі файли з будь-якої точки комп'ютера.
Стів Самуельс

32

Араксіс злиття . Це комерційно, але воно того варте ... Він доступний для Windows та Mac OS X.

Введіть тут опис зображення


5
Погодьтеся, це найкраще, що я використав.
Ден Олсон,

1
Моє зауваження: його відносно повільно при обробці великих файлів близько 5 Мб.
Нага Кіран

3
+1 для Araxis. Один з небагатьох інструментів, за які я був готовий платити хороші гроші, щоб мати для особистого користування. Все інше захаращене, заплутане та блідне в порівнянні (призначене каламбур).
Dan Esparza

8
Після тривалого використання Araxis моя компанія перейшла на KDiff3 з наступних причин: (1) Коли злиття в Araxis скасовується, файл все одно позначається як вирішений у TortoiseHg. (2) Araxis показує суміш ревізії бази та результату злиття на панелі "Результат об'єднання", яка часто плутає. (3) Від TortoiseHg KDiff3 автоматично злиється без взаємодії з користувачем, якщо він може це зробити. (4) Алгоритм злиття KDiff3 просто здається кращою справою. Однак ми все ще використовуємо Araxis як наш інструмент порівняння :)
Michael Platings

2
Як було сказано в коментарях до інших відповідей, правильний тристоронній інструмент злиття має 4 панелі - базову, локальну, віддалену та результат . Araxis співвідносить основу і результат, що може призвести до проблем.
neonblitzer

27

Алгоритм вирішення конфліктів Kdiff3 дійсно вражає.

Навіть коли субверсія вказує на конфлікт, Kdiff3 вирішує її автоматично. Існують версії для Windows та Linux з тим самим інтерфейсом. Можна інтегрувати його з Tortoise та з вашою linux оболонкою.

Це в списку мого улюбленого програмного забезпечення з відкритим кодом. Один з перших інструментів, який я встановлюю в будь-яку машину.

Ви можете налаштувати його як інструмент різниці за замовчуванням у програмах Subversion, Git, Mercurial та ClearCase. Він також вирішує майже всі конфлікти ClearCase. У Windows є інтеграція з Windows Explorer: виберіть два файли та клацніть правою кнопкою миші, щоб порівняти їх, або клацніть правою кнопкою миші, щоб зберегти файл на пізніше, а потім виберіть інший для порівняння.

Об'єднаний файл можна редагувати. Має гладкі комбінації клавіш.

Ви також можете використовувати його для порівняння та об’єднання каталогів. Побачити: Kdiff3 Порівняння каталогів

Вдосконалена функція полягає у використанні регулярних виразів для визначення автоматичних об'єднань.

Моє єдине роздратування полягає в тому, що його складно скласти, якщо його немає у вашому улюбленому сховищі дистрибутивів.


3
Я згоден щодо алгоритму злиття. Це неймовірно витончено, і як не дивно, здається, «знає», що ти хочеш зробити так, як інші інструменти не можуть. Він регулярно стискає diff3 та Subversion (сильний), і навіть може бути корисним при злитті Git.
кевінарпе

де знаходяться комбінації клавіш, щоб перейти далі та вибрати a / b / c?
мілорд

@mylord: використовуйте невелику автоматичну затримку затримки та ярлики Ctrl-1/2/3, щоб вибрати A / B / C для багатьох конфліктів.
neves

чи щось замінив KDiff3 для вас? Великий користувач цього, але я вважаю, що є краща альтернатива в наші дні
chrispepper1989,

1
@ chrispepper1989, я все ще використовую KDiff3 в Git сьогодні. Я ніколи не знаходив тристоронній додаток злиття, що значно краще, ніж KDiff3. У P4Merge є більш сучасний інтерфейс, але коли я тестував його, ви не змогли редагувати об'єднаний файл (я думаю, ви можете це зробити зараз).
neves

13

Я люблю Едіффа . Він вбудований в GNU Emacs .

Щоб зробити тристоронній розбір, використовуйте ediff-files3(для вибору трьох файлів) або ediff-buffer3(для вибору трьох уже відкритих буферів). У вас вийде такий екран:

триходова різниця в emacs

Зверніть увагу на різницю слів підсвічуванням.

Ви можете натиснути клавішу nабо pдля переходу до наступного / попереднього файлів змін, в той час як abбуде скопіювати область з буфера в (самий лівий) в буфер Ь (в середині), а так само для інших комбінацій однорядкове резюме a, b, c; rbвідновить область в буфері b. Натисніть ?на швидке меню довідки або прочитайте чудовий посібник із злиття diff3 в Emacs .


6
Наскільки я люблю едіфф, я бачу лише два буфера вгорі ... 3-х напрямне злиття повинно мати 3 або 4 вікна: три об'єднуються (локальне, віддалене та їх загальна база пращурів) та остаточний вихід об'єднання . Там же , здається, 3-смугові злиття в Ediff (називається ediff-merge-with-ancestor) , але я не впевнений , якщо він має 3 або 4 панелі, а також вище скріншот не відображає цього.
ShreevatsaR

Відредаговано, щоб показати тристоронню різницю @ShreevatsaR
unhammer

@unhammer Спасибі це краще, але воно все ще показує лише 3 вікна, тому не зрозуміло, що це справжній 3-х напрямний розріз (який би мав 4 вікна; див. kdiff3 та інші приклади). Якщо те, що показано на скріншоті, - це три об'єднані речі, де вихід?
ShreevatsaR

Ви деструктивно модифікуєте один (або більше!) Буферів. Тому я згадав, що abскопіює область з буфера а в буфер b. Я не думаю, що ще існує версія з чотирма вікнами ediff. (Я знаю, що emergeнатомість використовує виділений вихідний буфер, але emerge-files-with-ancestorне показує пращура, він використовує його лише для того, щоб відгадати правильну версію , побачивши, яка з них погоджується з предком.)
unhammer

11

Ультрапорівняти . Це дійсно добре, добре обробляє великі файли (більше 1 ГБ), доступно для Windows / Mac / Linux, і це комерційно, але воно того варте.

Знімок екрана UltraCompare Professional у Windows


Я не знаю, як налаштувати його на підтримку тристороннього злиття ... Чи може він відображати базовий файл посередині, 2 змінені файли зліва та справа, щоб я міг бачити, що змінюються в обох файлах на базі файл і об'єднаний результат 2 змінених файлів внизу? Я використовую UltraCompare 17.0
Ricky

1
Трохи googling знайшов це ultraedit.com/support/tutorials-power-tips/ultracompare/… - говорить про тристоронній злиття на кроці 6 розширеного злиття.
МістерТеллі

11

Дифуз - це простий у використанні інструмент тристороннього злиття. Він підтримує всі згадані вами платформи та системи контролю версій, і може порівнювати більше трьох файлів одночасно.

введіть тут опис зображення


2
І він навіть підтримує порівняння N файлів одночасно! Це стане в нагоді, якщо вам потрібно порівняти конфігураційні файли з багатьох однорідних програм.
Пій Редер

Я використовую Diffuse для більш ніж трьох порівнянь файлів
mohas


4

Підсумок полягає в тому, що я знайшов ECMerge чудовим, хоча комерційним продуктом. http://www.elliecomputing.com/products/merge_overview.asp

введіть тут опис зображення

Я також погоджуюся з MrTelly, що Ultracompare дуже хороший. Одна приємна особливість полягає в тому, що вона буде порівнювати RTF та Word документи, що зручно, коли ви закінчуєте програмування в слові з хлопцями з продажу, і вони не керують своїми документами правильно.


Перше посилання не працює, воно повертає 500 помилок. Якщо ресурс переміщено, відрегулюйте URL-адресу.
Сергій П. ака лазурний

@ SergeyP.akaazure - вибач за це. Мій блог не працює - я видалив посилання ..
Стів Мідглі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.