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


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.