Какой самый лучший трехсторонний инструмент слияния? [закрыто]


272

Subversion, Git, Mercurial и другие поддерживают трехсторонние слияния (объединяя мою, их и «базовую» ревизию) и поддерживают графические инструменты для разрешения конфликтов.

Какой инструмент вы используете? Windows, Mac OS X, Linux, бесплатная или коммерческая, вы называете это.

Вот некоторые из них, которые я использовал или слышал, только чтобы начать разговор:

(Я признаю, что это что-то вроде Best Diff Tool , но отличается тем, что я явно фокусируюсь на трехсторонних инструментах слияния; WinMerge исключен из списка, например.)



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

3
Трудно сказать, что является лучшим инструментом слияния, потому что это зависит от субъективных факторов. Но если вы ищете особенность, которая отмечает разницу, попробуйте semanticmerge.com
— Даниэль Пеньальба,

29
Как этот вопрос можно закрыть как неконструктивный? Он имеет 182 upvotes, 123 звезд и 11 ответов, очевидно , многие люди думают , что это конструктивно.
— Здравствуйте, до свидания,

3
@Shuklaswag Как это связано с моим вопросом? Я задавался вопросом, почему это было закрыто как "неконструктивно".
— Hellogoodbye

Ответы:


167

KDiff3 с открытым исходным кодом, кроссплатформенный

Единый интерфейс для Linux и Windows, очень умный алгоритм для разрешения конфликтов, регулярные выражения для автоматического разрешения конфликтов, интеграция с ClearCase, SVN, Git, MS Visual Studio, редактируемый объединенный файл, сравнение каталогов

Его клавиатурная навигация великолепна: стрелки ctrl для навигации по различиям, ctrl-1, 2, 3 для объединения.

Также см. Https://stackoverflow.com/a/2434482/42473.

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


10
Дополнительные преимущества KDiff3: одинаковый интерфейс для Linux и Windows, очень умный алгоритм для разрешения конфликтов, регулярные выражения для автоматического разрешения конфликтов, интеграция с ClearCase, SVN и Git, редактируемый объединенный файл, сравнение каталогов.
— Невес

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, это не дает больше возможностей для бизнеса;))
— Ohad Schneider

4
В P4merge нет поддержки сравнения папок. Это было бы действительно отличным дополнением к P4Merge.
— RuntimeException

95

Beyond Compare 3 Pro поддерживает трехстороннее слияние , и это довольно впечатляющий инструмент слияния. Он коммерческий (но того стоит, ИМХО) и доступен в Windows, Linux и Mac OS X.

Как отмечено в комментарии, это также недорого.

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

Примечание. Если у вас нет набора для слияния, то есть маркеров слияния, находящихся в целевом файле, Beyond Compare не предлагает трехстороннее сравнение / редактирование файлов. Beyond Compare говорит, что эта функция находится в их списке .

Примечание. Трехстороннее объединение - это функция только в Pro версии Beyond Compare 3


16
+1 Beyond Compare легко стоит своей цены, особенно если учесть, что это другие функции.
— jamiei

2
Хорошо, но нет поддержки выбора папок
— Майкл Фитцпатрик

9
Майкл, я не уверен, что ты имеешь в виду. В Beyond Compare есть отличная поддержка различий в папках: scootersoftware.com/moreinfo.php .
— Брюс Кристенсен

4
Это ясно указано на их веб-сайте - обновленный ответ для государственной версии Pro является обязательным требованием для трехстороннего слияния
— Джошуа Маккиннон

2
Помимо Compare 4 Pro добавлена ​​поддержка слияния папок.
— Крис Кеннеди

76

Meld Diff Viewer

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

  • Открытый источник
  • Linux, Windows и MacOS поддерживаются
  • Различный файл
  • Поддержка трехстороннего сравнения

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

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


3
+1 Мелд - это гладкое, чистое, "достаточно" программное обеспечение.
— Тревор Брамбл

15
Meld имеет недостатки, и его визуальные подсказки вводят в заблуждение.
— AIB

6
Мелд даже не работает с мерзавцем правильно.
— Сликц

65
К сожалению, 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, это на самом деле не разрешает конфликты, это просто diff.
— Петр

3
vimdiff теперь имеет хорошую обработку git для слияния в 3 направлениях (т.е. 4 панели) - vim.wikia.com/wiki/…
— Соня Гамильтон

8
@piotr vimdiff действительно разрешает конфликты. Вы используете команду "diffg <bufferNum>", чтобы создать объединенный файл в нижней панели. Нижняя область слияния - буфер 1, остальные 2,3,4 сверху. Чтобы перейти к diff-файлам используйте [c и] c. Это стандартная функциональность Debian Wheezy 7.7.
— Икки

37

Diff Merge :

Кроссплатформенные, настоящие трехсторонние слияния, и это абсолютно бесплатно для коммерческого или личного использования.

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


1
Я использовал DiffMerge в течение многих лет и мне понравилось. Тем не менее, я прочитал этот пост в блоге, где автор рассматривал инструменты слияния и сократил список до DiffMerge и P4Merge. В итоге он пошел с P4Merge просто потому, что у него был более приятный интерфейс. Я только начал использовать P4Merge сегодня, и я должен был бы согласиться. В частности, DiffMerge плохо показывает изменения - он показывает их как удаление и вставка. Это может сбить с толку, если есть много изменений близко друг к другу. P4Merge отображает это лучше.
— Саймон Тьюси

1
Я вижу, что diffmerge не бесплатен , он стоит 19 долларов
— erkfel

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

1
В DiffMerge, по сравнению с P4Merge (который я сейчас использую для сравнения и слияния в git), я считаю полезным то, что он интегрируется с Windows File Explorer. В частности, я могу запомнить файл в одной папке, а затем сравнить запомненный файл с другим в другой папке. Я считаю это полезным, может быть, один или два раза в месяц, когда мне не нужно перемещать два файла в одну и ту же папку, чтобы сравнить их (например, сценарии SQL, не находящиеся под контролем исходного кода).
— Саймон Тьюси

1
@SimonTewsi: P4Merge для Mac не требует, чтобы файлы находились в одной папке. Это позволяет вам просматривать файловую систему и выбирать базовые, первые и вторые файлы из любой точки компьютера.
— Стив Самуэльс

32

Araxis Merge . Он коммерческий, но он того стоит ... Он доступен для Windows и Mac OS X.

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


5
Согласитесь, это лучшее, что я использовал.
— Дэн Олсон

1
Мое наблюдение: это относительно медленно при обработке больших файлов около 5 МБ.
— Нага Киран

3
+1 за араксис. Один из немногих инструментов, которые я был готов заплатить хорошие деньги, чтобы иметь для личного использования. Все остальное загромождено, запутано и меркнет в сравнении (каламбур).
— Дэн Эспарза

8
После длительного использования Araxis моя компания перешла на KDiff3 по следующим причинам: (1) При отмене слияния в Araxis файл все еще помечается как разрешенный в TortoiseHg. (2) Araxis показывает смесь базовой ревизии и результата слияния на панели «Результат слияния», которая часто сбивает с толку. (3) Из TortoiseHg KDiff3 будет автоматически объединяться без взаимодействия с пользователем, если это возможно. (4) Алгоритм слияния KDiff3, похоже, работает лучше. Однако мы все еще используем Araxis в качестве нашего инструмента сравнения :)
— Michael Platings

2
Как уже упоминалось в комментариях к другим ответам, правильный трехсторонний инструмент слияния имеет 4 панели - базовую, локальную, удаленную и результирующую . Araxis объединяет базу и результат, что может привести к проблемам.
— неонблицер

27

Алгоритм разрешения конфликтов Kdiff3 действительно впечатляет.

Даже когда Subversion указывает на конфликт, Kdiff3 решает его автоматически. Есть версии для Windows и Linux с одинаковым интерфейсом. Можно интегрировать его с Tortoise и с вашей оболочкой linux.

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

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

Объединенный файл доступен для редактирования. Имеет удобные сочетания клавиш.

Вы также можете использовать его для сравнения и объединения каталогов. Видеть: Kdiff3 Сравнение каталогов

Расширенная функция заключается в использовании регулярных выражений для определения автоматических слияний.

Единственное, что меня раздражает, это то, что его немного сложно скомпилировать, если его нет в вашем любимом дистрибутиве.


3
Я согласен с алгоритмом слияния. Это невероятно изощренно, и, как ни странно, кажется, что «знает», что вы хотите сделать так, как другие инструменты не могут. Он регулярно уничтожает diff3 и Subversion (blarg) и даже может быть полезен при слиянии Git.
— Кевинарпе

где сочетания клавиш, чтобы перейти к следующему и выбрать A / B / C?
— Mylord

@mylord: используйте небольшую задержку автоматического продвижения и сочетания клавиш Ctrl-1/2/3, чтобы выбрать A / B / C для многих конфликтов.
— Невес

что-нибудь заменило 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
Как бы я ни любил ediff, я вижу только два буфера выше ... у трехстороннего слияния должно быть 3 или 4 окна: три сливаемых (локальное, удаленное и их общая база предков) и окончательный вывод слияния , Там же , кажется, 3-полосные слияния в Ediff (называется ediff-merge-with-ancestor) , но я не уверен , если он имеет 3 или 4 панели, а также выше скриншот не отражает этого.
— ShreevatsaR

Отредактировано, чтобы показать трехстороннюю разницу @ShreevatsaR
— unhammer

@unhammer Спасибо, это лучше, но он по-прежнему показывает только 3 окна, поэтому не ясно, что это настоящий трехсторонний дифференциал (который будет иметь 4 окна; см. kdiff3 и другие примеры). Если то, что показано на скриншоте, объединяет три вещи, где результат?
— ShreevatsaR

Вы деструктивно модифицируете один (или более!) Из буферов. Вот почему я упомянул, что abскопирует область из буфера a в буфер b. Я не думаю, что есть версия с четырьмя окнами ediff. (Я знаю, emergeчто вместо этого использует выделенный выходной буфер, но emerge-files-with-ancestorне показывает предка, он только использует его, чтобы угадать правильную версию , видя, какая из них согласуется с предком.)
— unhammer

11

Ultracompare . Это действительно хорошо, хорошо обрабатывает большие файлы (более 1 ГБ), доступно для Windows / Mac / Linux, и оно коммерческое, но оно того стоит.

Снимок экрана UltraCompare Professional для Windows


Я не знаю, как настроить поддержку трехстороннего слияния ... Может ли он отображать базовый файл посередине, 2 измененных файла слева и справа, чтобы я мог видеть, что изменилось в обоих файлах на основе базы файл и есть объединенный результат 2 измененных файлов в нижней части? Я использую UltraCompare 17.0
— Ricky

1
Немного погуглив, нашел это ultraedit.com/support/tutorials-power-tips/ultracompare/… - рассказывает о трехстороннем слиянии в шаге 6 расширенного слияния.
— MrTelly

11

Diffuse - это простой в использовании инструмент трехстороннего слияния. Он поддерживает все платформы и системы контроля версий, которые вы упомянули, и может сравнивать более трех файлов одновременно.

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


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.