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

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

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

Моя ОС - Ubuntu.


person andy    schedule 26.09.2008    source источник
comment
Для какой ОС вам нужны инструкции?   -  person Luke    schedule 26.09.2008
comment
Использование kdiff3 с git mergetool должно работать нормально. У меня с этим проблем не было.   -  person Zitrax    schedule 30.09.2010
comment
Чтобы просто провести различие, выполните kdiff3 file1 file2a или kdiff3 file1 file2a file2b (это предполагает, что file1 является общим предком для file2a и file2b) и выполните трехстороннее слияние с этими файлами и выведите объединенный файл в file3 do kdiff3 -b file1 file2a file2b -o file3.   -  person Mark Booth    schedule 02.03.2011
comment
Но сейчас это запрещено, поэтому я ненавижу stackoverflow в наши дни. Без этих вопросов это слишком сухо и скучно.   -  person István Ujj-Mészáros    schedule 03.03.2016
comment
Если бы этот вопрос был открытым, я бы ответил, предлагая xxdiff. 4 отображения файлов и различие на уровне слов в каждой строке   -  person BeniBela    schedule 02.07.2016
comment
Есть ли сайт обмена стеками, на котором разрешен этот тип вопросов? Если нет, то должно быть ..   -  person fzzylogic    schedule 07.07.2016
comment
Похоже, пришло время для нового Stack Overflow, где такие вопросы разрешены. Очевидно, что, как многие утверждали, такие вопросы ценны для стольких людей, что закрывать их просто глупо. Я думаю, вы переборщили с бюрократией. Как насчет того, чтобы провести опрос по этому вопросу и узнать, что хотят ваши клиенты? P   -  person Piotr Owsiak    schedule 09.09.2016
comment
Есть softwarerecs.stackexchange.com.   -  person Philipp Wendler    schedule 13.02.2017
comment
По-разному. kdiff3 и p4merge бесплатны и легко работают с git. kdiff3 имеет функцию --auto, которая полезна для написания сценариев. Я обнаружил, что p4merge значительно лучше автоматически разрешает конфликты.   -  person user1976    schedule 06.04.2017
comment
Проблема: программные ресурсы бесполезны, потому что эксперты здесь, а не там.   -  person reinierpost    schedule 27.06.2017
comment
Для меня лучшим инструментом будет тот, который имеет высококачественные курсы (а не случайные ненужные курсы Udemy). Я думаю, что после того, как кто-то изучит основы работы с инструментами, будет легко изучить другие инструменты. Мне еще предстоит найти, какой инструмент соответствует моим критериям.   -  person MasterJoe    schedule 05.03.2019
comment
Поскольку этот вопрос закрыт, мне потребовалось больше времени, чтобы понять, что я могу просто использовать инструмент Pycharm Git для слияния.   -  person Noumenon    schedule 19.03.2020
comment
Закрытие этих типов вопросов как основанных на мнении - вот что отличает Quora от SO. Давайте не позволим SO быть Quora.   -  person Yaman K Singla    schedule 03.06.2020
comment
@ChrisMarisic Как этот вопрос скрыт? Это просто закрыто.   -  person Modus Tollens    schedule 03.06.2020
comment
@ModusTollens, когда я опубликовал это, он находился в каком-то странном состоянии неопределенности, мой уровень привилегий был таким, каким я мог его тогда увидеть.   -  person Chris Marisic    schedule 11.06.2020
comment
Соглашаясь с некоторыми комментариями здесь, этот вопрос важен для меня, даже если он основан на мнении, потому что я ДОВЕРЯЮ переполнению стека для моих ответов, а не случайным мнениям, которые я нахожу в Google, которые я должен прочесать, когда сообщество переполнения стека будет дали мне ответ. Ключевой принцип разработки - не переделывать уже проделанную работу.   -  person spacebread    schedule 21.12.2020
comment
Связано: stackoverflow.com/questions/ 14821358 /   -  person Gabriel Staples    schedule 12.02.2021


Ответы (18)


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

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

person Community    schedule 26.09.2008
comment
Кого волнует ОС, которую использует оригинальный автор? Вопрос достаточно общий, чтобы заинтересовать всех, кто его ищет. А трехстороннее различие - это когда вы на самом деле видите 4 панели с тестом; база слияния / локальный / удаленный / результат - person Evgeny; 23.01.2011
comment
meld утомительно со сложными различиями, возможность выбирать такие параметры, как chose b for all unresolved conflicts, намного лучше, чем необходимость вручную щелкать правильную стрелку для каждого фрагмента в meld. Кроме того, возможность слияния с конкретным выходным файлом вместо редактирования входных файлов на месте неоценима для защиты от неудачных нервов. - person Mark Booth; 02.03.2011
comment
Meld некорректно работает как инструмент слияния с git, поскольку показывает маркеры слияния. - person slikts; 22.12.2011
comment
@jnnnnn Я могу подтвердить, что meld определенно работает с Windows. ему просто не хватает установщика. - person n611x007; 09.08.2012
comment
@jooks meldmerge.org. Может, Meld и не самый лучший, но у меня он отлично работает :) - person codefreak; 14.02.2013
comment
У @naxa Meld теперь есть установщик Windows: code.google.com/p/meld-installer < / а> - person Roman; 18.03.2013
comment
Теперь есть установщик meld windows (по крайней мере, 1.8). Зайдите на их сайт, и у них будет ссылка на Sourceforge. Был гугл-код, потом его перевели, кто знает, что будет. Итак, проверьте их сайт на наличие ссылки. - person QueueHammer; 30.04.2014
comment
Ссылка на Mac не работает. Вот еще один: alexkras.com/ - person rousseauo; 29.09.2015
comment
kdiff3 позволяет видеть 4 представления, meld допускает только 3 представления. Meld - это не настоящий инструмент слияния, это инструмент сравнения, поскольку он не отображает представление базовой версии. - person Akira Yamamoto; 05.05.2016
comment
Примечание: вам необходимо установить python 3.3 или выше для последней версии meld. - person vineet; 10.01.2017
comment
У Meld есть проблемы. Это действительно раздражает, когда меняют Мои, а затем их изменения. И иногда это трудно читать. - person Morgan LaVigne; 08.05.2017
comment
Meld ужасен, особенно для слияний. У него нет возможности автоматически переносить неконфликтные изменения, что делает каждое слияние ужасно болезненным. - person Cerin; 26.05.2017
comment
На сайте нет https. Не пойдет. - person Ryan; 26.05.2019
comment
@Ryan: в настоящее время сайт доступен через HTTPS, и на него есть перенаправление с обычного HTTP. - person paprika; 02.01.2020
comment
Для Windows и Linux инструкции по установке для meld, чтобы вы могли запустить git difftool, чтобы увидеть изменения файлов с помощью meld, вот мой ответ: stackoverflow.com/a / 48979939/4561887. - person Gabriel Staples; 12.02.2021
comment
@Cerin Это неправда, в меню есть Changes - ›Merge All, который объединяет неконфликтующие блоки. - person pcworld; 12.05.2021

Вы можете настроить свой собственный инструмент слияния для использования с «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

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

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

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

person Community    schedule 10.02.2010
comment
Обратите внимание: поскольку p4merge (сейчас) является одним из официально поддерживаемых git mergetools, больше нет необходимости использовать переменную tool. .cmd. - person Matt Ball; 03.05.2011
comment
Убедитесь, что вы используете правильную цитату: stackoverflow.com/a/1217994/3543437 - person kayleeFrye_onDeck; 22.03.2016

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

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

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

SourceGear Diff / Merge может быть моим вторым бесплатным инструментом. Убедитесь, что слияние screen-shot, и вы увидите, что на нем 3 просмотров минимум.


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

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

person Wernight    schedule 01.10.2010
comment
Perforce Merge великолепен. У него есть инструмент слияния с 4 панелями, который действительно помогает: Yours, theirs, Common Base, New - person Gal; 24.05.2011
comment
P4 также используется Google. . - person Wernight; 02.08.2011
comment
Вы можете индивидуально установить только P4Merge без остальной части принудительно. - person Dirk Bester; 11.05.2012
comment
Последняя версия p4merge не имеет интерфейса только для чтения. Вы можете редактировать объединенный файл на нижней панели. - person Ian Ni-Lewis; 21.11.2012
comment
Это действительно отличный ответ и обсуждение. Спасибо, что поделились! - person Mark Good; 18.03.2015
comment
Я использовал как P4Merge, так и Beyond Compare (BC). Компания, в которой я работал, имела лицензию на BC Pro. Каждый мог выбрать тот, который ему нужен, или мог загрузить свой собственный инструмент. Все использовали BC. Обратите внимание, что стандартная версия стоит 30 долларов, а версия Pro - 60 долларов, когда я это пишу. Никакой принадлежности, мне просто нравится их программное обеспечение. Это и Visual Assist. Мммм ... - person Mark Storer; 03.06.2020

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

person Community    schedule 26.09.2008
comment
+1: kdiff3 намного превосходит meld и также изначально поддерживается git. - person Mark Booth; 02.03.2011
comment
kdiff3 имеет гораздо больше функций, но meld имеет лучший интерфейс. На мой взгляд, meld лучше подходит для простых слияний, когда возможностей, предоставляемых meld, достаточно. Не забудьте попробовать и diffuse. - person Mikko Rantalainen; 07.08.2013
comment
kdiff3 позволяет видеть 4 представления, meld допускает только 3 представления. Meld - это не настоящий инструмент слияния, это инструмент сравнения, поскольку он не отображает представление базовой версии. - person Akira Yamamoto; 05.05.2016
comment
kdiff3 в порядке, но он часто дает сбой с ошибками «Потеря данных», и в этом случае необходима альтернатива - person user377178; 02.10.2020

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

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

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

person Luke    schedule 26.09.2008
comment
как настроить его для работы с git? - person Ryan Lundy; 30.03.2011
comment
@Kyralessa См. stackoverflow.com/questions/255202/ - person Luke; 31.03.2011
comment
Спасибо, что представили мне его !! : D Этот инструмент чистый, на установку и работу у него ушло меньше времени, чем на meld. Полчаса пытаюсь установить meld. Но этот я сделал за 5 минут !! - person om39a; 10.03.2014
comment
Примечание: diffmerge, похоже, не имеет функции трехстороннего слияния. Я отказываюсь от него после пары недель попыток по этой причине - person StormeHawke; 10.10.2014
comment
Это хороший инструмент, который также может сравнивать папки. Проблема в том, что она довольно медленная (MacBookPro 15 2014, MacOS Catalina) - person emKaroly; 05.01.2020

vimdiff

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

:help vimdiff 

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

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

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

person Andrew Wagner    schedule 01.10.2010
comment
‹3 vimdiff, я не могу понять, как убедить svn позволить мне использовать его как инструмент« слияния ». - person klokop; 20.01.2011
comment
gvimdiff также хорошо подходит для этой цели. - person new123456; 21.07.2011
comment
Использование плагина Fugitive делает это еще проще! vimcasts.org/episodes/ - person Erikw; 20.01.2015
comment
Если бы только был способ четко увидеть разницу между локальным / базовым и базовым / удаленным. - person Ciro Santilli 新疆再教育营六四事件ۍ 13.06.2019

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

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

person niutech    schedule 29.05.2017
comment
Инструмент слияния Idea просто великолепен. он даже доступен в версии сообщества Idea, что означает, что вы можете использовать его бесплатно в качестве расширенного инструмента слияния - это то, что я делаю (в большинстве случаев я использую VSCode, где я работаю, и я использую Idea для сложных случаев слияния). VSCode тоже неплохо справляется, а иногда даже лучше, чем Idea. но для сложных случаев их трехпанельная компоновка - лучший инструмент, который я когда-либо видел - person godblessstrawberry; 10.10.2019
comment
Я ненавижу то, что полоса прокрутки "сводка файлов" НЕ вместе! Основная причина, по которой мне нравится диффузный! - person anthony; 17.01.2020
comment
не работал у меня - person Gonzalo Garcia; 23.07.2020

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

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

Возможности включают в себя:

  • Выделение и редактирование различий в текстовых файлах
  • Выберите включение или игнорирование окончаний строк или пробелов
  • Распознавать соглашения об окончании строки для Windows (CRLF), Mac (CR) и Unix (LF)
  • Используйте параметры командной строки и запускайте из приложений, не относящихся к Perforce
  • Отображение номеров строк при сравнении и объединении файлов
  • Исключить измененные, уникальные или неизмененные файлы
  • Фильтровать файлы по имени или расширению
  • Организуйте измененные активы в знакомой иерархии файлов / папок
  • Сравните JPEG, GIF, TIFF, BMP и другие форматы файлов
  • Расширить с помощью Qt API
  • Наложение изображений или отображение бок о бок
  • Подчеркивайте различия на наложенных изображениях
person Ron    schedule 01.09.2009
comment
лучший из тех, что я видел до сих пор. легко разрешать конфликты, выбирая изменение из списка трехстороннего просмотра - person chovy; 29.08.2015
comment
Новая ссылка: perforce.com/downloads/helix#product-10 - person Brill Pappin; 30.11.2015
comment
Исправляет ссылку perforce.com/downloads/helix#clients - person Al-Mothafar; 23.03.2017
comment
Начал пользоваться сегодня, и это довольно интуитивно понятно. - person Resource; 20.04.2018

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

$ diffuse "mine" "output" "theirs"

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

person Community    schedule 03.12.2008
comment
Мне очень нравится диффузный подход, и я не пристрастен. - person jturcotte; 11.09.2009
comment
@ Деррик Мозер: diffuse выглядит очень красиво. Я просто попробовал это сейчас, и он отличался лучше, чем kdiff3. Но я пытаюсь использовать его с git mergetool, и он открывает 4 файла рядом друг с другом (локальный, результат слияния, удаленный, базовый), и мой экран недостаточно широк для этого. Пришлось делать много горизонтальной прокрутки. kdiff3 показывает только 3 рядом друг с другом и результат в нижней половине окна. - person yairchu; 09.12.2010
comment
diffuse имеет некоторые дополнительные параметры слияния по сравнению с meld (позволяет объединить обе версии, а не выбирать одну из них). - person Audrius Meskauskas; 26.04.2013
comment
diffuse из коробки работает в Windows, сравнивая 2 папки, с репозиторием CVS, с репозиторием Git, слиянием конфликтов слияния git. Файлы diffuse diff открываются во вкладках в одном окне. Я переключился на диффузный (после использования emacs 'ediff (слишком много функций, полезных в 90-х) ›vimdiff (нажатия клавиш сложных плагинов)› p4merge ›araxis (собственный)› meld (слишком медленно), tkdiff (только cvs) ›kdiff3 (хорошо , хорошее регулярное выражение игнорирует функции) ›winmerge (хорошо)› diffuse (быстро, переносимо, работает, как ожидалось)) в первый раз, когда я попробовал diffuse. - person mosh; 13.02.2018
comment
Как изменить язык графического интерфейса в Diffuse? - person zach; 09.08.2018

Araxis Merge http://www.araxis.com/merge Я использую его в Mac OS X но я использовал его в Windows ... это не бесплатно ... но в нем есть приятный функции ... лучше для Windows.

person Clintm    schedule 10.04.2010

Если вы просто ищете несравненный инструмент сравнения, это очень хорошо: http://www.scootersoftware.com/moreinfo.php

person Nathan Feger    schedule 26.09.2008

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

person user35149    schedule 18.11.2008

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

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

    DiffMerge

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

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

  • KDiff3, программа сравнения и слияния), которая сравнивает или объединяет 2 или 3 файла / каталога ввода текста.
  • opendiff (часть Xcode Инструменты в macOS), утилита командной строки, которая запускает приложение FileMerge из Терминала для графического сравнения файлов или каталогов, включая слияние.
person kenorb    schedule 18.08.2017
comment
git config --global merge.tool opendiff работал лучше всего для меня - person James Matthew Mudgett; 29.01.2020

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

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

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

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

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

    • I would also recommend project-manager as a very convenient way to navigate between projects without filling up your tree view.
  • Единственная проблема, с которой я столкнулся, - это обновление: при работе с большими репозиториями атом может медленно обновлять изменения, которые вы делаете вне его. Я просто всегда закрываю его, когда заканчиваю, а затем снова открываю, когда хочу снова просмотреть свои изменения / фиксацию. Вы также можете перезагрузить окно с помощью ctrl + shift + f5, что займет всего секунду.

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

person Sean McCallum    schedule 30.09.2017

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

person Charith    schedule 16.06.2017

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

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

Первым может позвонить:

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

Второй вызывается, когда вы используете git mergetool.

person ephemerr    schedule 01.12.2017

Вы можете установить ECMerge diff / merge tool на свой Linux, Mac или Windows. Он предварительно настроен в Git, поэтому достаточно использовать git mergetool.

person Armel    schedule 04.09.2010

gitx http://gitx.frim.nl/

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

person Blake Lucchesi    schedule 01.09.2009