Какой лучший инструмент визуального слияния для Git? [закрыто]

599

Какой лучший инструмент для просмотра и редактирования слияния в Git? Я хотел бы получить трехстороннее представление слияния с «моим», «их» и «предком» на отдельных панелях и четвертой «выходной» панелью.

Также были бы полезны инструкции для вызова указанного инструмента. (Я до сих пор не понял, как запустить kdiff3 таким образом, чтобы он не выдавал ошибку.)

Моя ОС - Ubuntu.

Энди
источник
15
«Но теперь это не разрешено», да, именно поэтому я ненавижу stackoverflow в настоящее время. Без вопросов слишком сухо и скучно.
Иштван Уй-Месарош
17
Есть ли сайт stackexchange, где разрешен этот тип вопросов? Если нет, то должно быть ..
fzzylogic
16
Похоже, пришло время для нового переполнения стека, где такие вопросы разрешены. Очевидно, что многие из них задали такие вопросы, которые очень важны для многих людей, поэтому глупо закрывать их. Я думаю, что вы прошли через доску с бюрократией. Как насчет того, чтобы сделать опрос по этому вопросу и посмотреть, чего хотят ваши «клиенты»? P
Piotr Owsiak
9
Существует softwarerecs.stackexchange.com
Филипп Вендлер,
6
Проблема: softwarerecs бесполезен, потому что эксперты здесь, а не там.
reinierpost

Ответы:

337

Meld - это бесплатный инструмент для сравнения / слияния с открытым исходным кодом и кроссплатформенный (UNIX / Linux, OSX, Windows).

Вот как это установить:

user20805
источник
53
Кто заботится об ОС, которую использует оригинальный автор ?, вопрос достаточно общий, чтобы заинтересовать всех, кто его ищет. А трехсторонний дифференциал - это когда вы на самом деле видите 4 панели с тестом; база слияния / локальная / удаленная / результат
Evgeny
16
meldутомительно со сложными различиями, возможность выбирать такие параметры chose b for all unresolved conflictsнамного лучше, чем необходимость вручную нажимать на нужную стрелку для каждого элемента meld. Кроме того, возможность объединяться в конкретный выходной файл, а не редактировать входные файлы на месте, неоценима для отказа от неудачных нервов.
Марк Бут
3
@naxa Meld теперь есть инсталлятор для Windows: code.google.com/p/meld-installer
Roman
6
kdiff3 позволяет вам видеть 4 просмотра, слияние позволяет только 3 просмотра. Meld не настоящий инструмент слияния, это инструмент сравнения, так как он не отображает базовую версию.
Акира Ямамото
4
Мелд ужасен, особенно для слияний. У него нет возможности «автоматически переносить не конфликтующие изменения», что делает каждое слияние ужасно болезненным.
Cerin
91

Вы можете настроить свой собственный инструмент слияния для использования с " git mergetool".

Пример:

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

И пока вы на нем, вы также можете установить его как ваш difftool для " git difftool":

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

Обратите внимание, что в Unix / Linux вы не хотите, $BASEчтобы ваша оболочка анализировала переменную как переменную - она ​​должна отображаться в вашем файле ~ / .gitconfig, чтобы это работало.

Евгений
источник
10
Обратите внимание, что поскольку p4merge (в настоящее время) является одним из официально поддерживаемых git mergetools, нет необходимости гадать с этим инструментом. Переменная .cmd больше.
Мэтт Болл
2
Убедитесь, что вы используете правильную цитату: stackoverflow.com/a/1217994/3543437
kayleeFrye_onDeck
64

Beyond Compare 3 , мой любимый, имеет функцию слияния в версии Pro . Хорошая вещь с его слиянием состоит в том, что он позволяет вам видеть все 4 вида: базовый, левый, правый и объединенный результат. Это несколько менее наглядно, чем P4V, но гораздо больше, чем WinDiff. Он интегрируется со многими системами контроля версий и работает в Windows / Linux. Он имеет много функций, таких как расширенные правила, издания, ручное выравнивание ...

Perforce Visual Client ( P4V ) - это бесплатный инструмент, который предоставляет один из наиболее явных интерфейсов для слияния (см. Некоторые скриншоты ). Работает на всех основных платформах. Мое главное разочарование этим инструментом - это своего рода интерфейс «только для чтения» . Вы не можете редактировать файлы вручную и вы не можете выровнять вручную.

PS: P4Merge включен в P4V. Perforce пытается усложнить получение своего инструмента без клиента.

SourceGear Diff / Merge может быть моим вторым бесплатным выбором инструмента. Проверьте этот снимок экрана слияния,и вы увидите, что он имеет как минимум 3 вида.


Meld - это более новый бесплатный инструмент, который я бы предпочел SourceGear Diff / Merge : теперь он также работает на большинстве платформ (Windows / Linux / Mac) с явным преимуществом встроенной поддержки некоторых систем контроля версий, таких как Git . Таким образом, вы можете иметь некоторые различия в истории всех файлов гораздо проще. Представление слияния (см. Скриншот ) имеет только 3 панели, как и SourceGear Diff / Merge . Это усложняет слияние в сложных случаях.

PS: если один инструмент в один прекрасный день поддерживает объединение 5 представлений , это было бы действительно здорово, потому что если вы делаете коммит вишни в Git, у вас действительно будет не одна база, а две. Две базы, две смены и одна результирующая слияние.

Wernight
источник
7
Perforce Merge великолепен. У этого есть инструмент слияния с 4 панелями, который действительно помогает: Ваш, Их, Общая База, Новый
Гал
4
P4 также используется Google .
Wernight
5
Пользователь может установить только P4Merge без остального исполнения.
Дирк Бестер
6
Последняя версия p4merge не имеет интерфейса «только для чтения». Вы можете редактировать объединенный файл в нижней панели.
Ян Ни-Льюис
1
Это действительно отличный ответ и обсуждение. Спасибо, что поделились!
Марк Гуд
45

Я слышал хорошие вещи о kdiff3.

Крюгер
источник
4
+1: kdiff3 намного превосходит meld и также изначально поддерживается git.
Марк Бут
3
kdiff3имеет гораздо больше возможностей, но meldимеет лучший интерфейс. На мой взгляд, meldэто лучше для легких объединений, где достаточно функций, предоставляемых meld. Не забудьте попробовать diffuseтоже.
Микко Ранталайнен
kdiff3 позволяет вам видеть 4 просмотра, слияние позволяет только 3 просмотра. Meld не настоящий инструмент слияния, это инструмент сравнения, так как он не отображает базовую версию.
Акира Ямамото
43

Мой любимый инструмент визуального слияния - SourceGear DiffMerge

  • Это бесплатно.
  • Кроссплатформенность (Windows, OS X и Linux).
  • Чистый визуальный интерфейс
  • Все функции сравнения, которые вы ожидаете (Diff, Merge, Folder Diff).
  • Интерфейс командной строки.
  • Полезные сочетания клавиш.

Пользовательский интерфейс

Люк
источник
3
как настроить его для работы с git?
Райан Ланди
2
@Kyralessa См stackoverflow.com/questions/255202/...
Лука
2
Спасибо, что представили это мне !! : D Этот инструмент чистый и занял меньше времени на установку и работу, чем слияние. Я провожу полчаса, пытаясь установить соединение. Но этот я сделал за 5 минут !!
om39a
2
Примечание: у diffmerge нет функции слияния в 3 направлениях. По этой причине я отказываюсь от этого после нескольких недель
попыток
Это хороший инструмент, а также может сравнивать папки. Проблема в том, что она довольно медленная (MacBookPro 15 2014, MacOS Catalina)
emKaroly
33

vimdiff

Как только вы изучите vim (и, по-моему, вам следует), vimdiff - это еще одна красивая маленькая ортогональная концепция для изучения. Чтобы получить онлайн-справку в vim:

:help vimdiff 

Этот вопрос описывает, как его использовать: как мне использовать vimdiff для разрешения конфликта?

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

Если вы застряли в темных веках использования мыши, а файлы, которые вы объединяете, не очень большие, я рекомендую объединить.

Эндрю Вагнер
источник
<3 vimdiff, я не могу понять, как убедить svn позволить мне использовать его как инструмент 'слияния'.
Клокоп
gvimdiff также хорошо работает для этой цели.
new123456
2
Использование плагина Fugitive делает это еще проще! vimcasts.org/episodes/…
Эрик Веструп
Если бы только был способ четко увидеть разницу между локальным / базовым и базовым / удаленным.
Сиро Сантилли 郝海东 冠状 病 六四 事件 法轮功
24

Вы можете попробовать P4Merge .

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

Особенности включают в себя:

  • Выделить и редактировать различия текстовых файлов
  • Выберите, чтобы включить или игнорировать окончания строки или пробелы
  • Распознавать соглашения о конце строки для Windows (CRLF), Mac (CR) и Unix (LF)
  • Использовать параметры командной строки и запускать из не-приложений Perforce
  • Отображать номера строк при сравнении и объединении файлов
  • Исключить файлы, которые были изменены, уникальны или не изменены
  • Фильтровать файлы по имени или расширению
  • Организовать измененные ресурсы в привычной иерархии файлов / папок
  • Сравните JPEG, GIF, TIFF, BMP и другие форматы файлов
  • Расширение с использованием API Qt
  • Наложение изображений или отображение рядом
  • Выделите различия на наложенных изображениях
Рон
источник
лучший, который я видел до сих пор. легко разрешать конфликты, выбирая изменения из списка трехстороннего просмотра
chovy
Новая ссылка: Perforce.com/downloads/helix#product-10
Брилл Паппин
Исправление ссылки Perforce.com/downloads/helix#clients
Аль-Мотафар
Начал использовать его сегодня, и это довольно интуитивно понятно.
Ресурс
22

IntelliJ IDEA имеет изощренный инструмент разрешения конфликтов слияния с волшебной палочкой Resolve, которая значительно упрощает слияние:

Источник: https://blog.jetbrains.com/dotnet/2017/03/13/rider-eap-update-version-control-database-editor-improvements/

niutech
источник
2
Инструмент слияния идей просто великолепен. он даже доступен в версии сообщества Idea, что означает, что вы можете использовать его бесплатно как расширенный инструмент слияния - это то, чем я занимаюсь (в большинстве случаев я использую VSCode, где я работаю, и я использую Idea для сложных случаев слияния). VSCode тоже неплохо работает, а иногда даже лучше, чем Idea. но для сложных случаев их
godblessstrawberry
Ненавижу, как полоса прокрутки «летний файл» НЕ вместе! Основная причина, по которой я люблю диффузный!
Энтони
16

Диффузный - мой любимый, но, конечно, я предвзятый. :-) Он очень прост в использовании:

$ diffuse "mine" "output" "theirs"

Diffuse - это небольшой и простой инструмент для слияния текста, написанный на Python. С Diffuse вы можете легко объединять, редактировать и просматривать изменения в вашем коде. Diffuse - это свободное программное обеспечение.

kenorb
источник
2
Мне очень нравится диффузный, и я не предвзятый.
Jturcotte
2
@ Деррик Мозер: diffuseвыглядит очень мило. Я только что попробовал это сейчас, и это было лучше, чем диффузия kdiff3. Но я пытаюсь использовать его вместе, git mergetoolи он открывает 4 файла рядом друг с другом (локальный, результат слияния, удаленный, базовый), и мой экран недостаточно широк для этого. Мне пришлось сделать много горизонтальной прокрутки. kdiff3 показывает только 3 рядом друг с другом и результат в нижней половине окна.
Яирчу
У diffuse есть несколько дополнительных опций слияния по сравнению с meld (позволяет объединять обе версии, а не выбирать одну из них).
Аудрюс Мескаускас
diffuse работает из коробки на окнах, для сравнения 2 папок, с CVS-репо, с Git-репо, слияниями git merge, конфликтами. Файлы diffuse diff открываются во вкладках в одном окне. Я переключился на diffuse (после того как использовал emacs 'ediff (слишком много возможностей, полезных в 90-х годах)> vimdiff (сложные нажатия плагинов)> p4merge> araxis (проприетрия)> meld (слишком медленно), tkdiff (только cvs)> kdiff3 (хорошо) , хорошее регулярное выражение игнорировать функции)> winmerge (хорошо)> диффузно (быстро, переносимо, работает как положено)) в первый раз, когда я попытался использовать диффузию.
Мош
Как изменить язык графического интерфейса в Diffuse?
Зак
9

Вы можете изменить инструмент, используемый git mergetool, передав git mergetool -t=<tool>или --tool=<tool>. Чтобы изменить значение по умолчанию (из vimdiff), используйте git config merge.tool <tool>.

user35149
источник
6

Итак, для git merge вы можете попробовать:

  • DiffMerge для визуального сравнения и объединения файлов в Windows, OS X и Linux.

    DiffMerge

  • Meld , инструмент визуального сравнения и слияния.

    Meld - инструмент визуального сравнения и слияния

  • KDiff3 , программа сравнения и слияния), которая сравнивает или объединяет 2 или 3 текстовых входных файла / каталога.
  • opendiff(часть Xcode Tools на macOS), утилита командной строки, которая запускает приложение FileMerge из терминала для графического сравнения файлов или каталогов, включая слияние .
kenorb
источник
2
git config --global merge.tool opendiffработал лучше всего для меня
Джеймс Мэтью Mudgett
5

Я перепробовал много инструментов, упомянутых здесь, и ни один из них не был тем, что я искал.

Лично я нашел Atom отличным инструментом для визуализации различий и разрешения конфликтов / слияния.

Что касается слияния, то здесь нет трех видов, но все они объединены в одно с цветной подсветкой для каждой версии. Вы можете редактировать код напрямую или использовать кнопки для использования любой версии этого фрагмента.

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

  • Вы можете запустить его из командной строки и передать в один файл, который вы хотите открыть, или добавить папку вашего проекта (git repo).

    • Я бы также рекомендовал менеджер проектов как очень удобный способ навигации между проектами без заполнения дерева.
  • Единственная проблема, с которой я столкнулся, это обновление - при работе с большими репозиториями атом может медленно обновлять изменения, которые вы делаете вне его. Я просто всегда закрываю его, когда заканчиваю, а затем снова открываю, когда хочу снова просмотреть свои изменения / коммит. Вы также можете перезагрузить окно с помощью Ctrl + Shift + F5, который занимает всего секунду.

И это бесплатно, конечно.

Шон МакКаллум
источник
3

Я использую различные инструменты для слияния и сравнения:

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

Кулак может быть вызван:

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

Второй называется при использовании git mergetool.

ephemerr
источник
2

Если вы используете Visual Studio , встроенный инструмент Team Explorer - очень хороший инструмент для разрешения конфликтов git-merge.

Charith
источник
0

gitx http://gitx.frim.nl/

Некоторые ошибки при работе с большими наборами коммитов, но отлично подходят для просмотра изменений и выбора различных изменений для stage, а затем для фиксации.

Блейк Луччи
источник