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

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

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

Моя ОС - Ubuntu.

Для какой ОС вам нужны инструкции?

Luke 26.09.2008 04:45

Использование kdiff3 с git mergetool должно работать нормально. У меня с этим проблем не было.

Zitrax 30.09.2010 18:05

Чтобы просто сравнить, выполните kdiff3 file1 file2a или kdiff3 file1 file2a file2b (это предполагает, что file1 является общим предком для file2a и file2b), и выполните трехстороннее слияние с этими файлами и выведите объединенный файл в file3, чтобы сделать kdiff3 -b file1 file2a file2b -o file3.

Mark Booth 02.03.2011 21:45

«Но сейчас это не разрешено», да, поэтому я ненавижу stackoverflow в наши дни. Без этих вопросов это слишком сухо и скучно.

István Ujj-Mészáros 03.03.2016 03:50

Если бы этот вопрос был открытым, я бы ответил, предлагая xxdiff. 4 отображения файлов и различия на уровне слов в каждой строке

BeniBela 02.07.2016 15:05

Есть ли сайт обмена стеками, на котором разрешен этот тип вопросов? Если нет, то должно быть ..

fzzylogic 07.07.2016 03:58

Похоже, пришло время для нового Stack Overflow, где такие вопросы разрешены. Очевидно, что, как многие утверждали, такие вопросы ценны для стольких людей, что закрывать их просто глупо. Я думаю, вы переборщили с бюрократией. Как насчет того, чтобы провести опрос по этому вопросу и узнать, чего хотят ваши «клиенты»? P

Piotr Owsiak 09.09.2016 14:49

Есть softwarerecs.stackexchange.com

Philipp Wendler 13.02.2017 19:34

По-разному. kdiff3 и p4merge бесплатны и легко работают с git. kdiff3 имеет функцию --auto, которая полезна для написания сценариев. Я обнаружил, что p4merge значительно лучше автоматически разрешает конфликты.

user1976 06.04.2017 20:23

Проблема: программное обеспечение бесполезно, потому что эксперты здесь, а не там.

reinierpost 27.06.2017 20:09

Для меня лучшим инструментом будет тот, у которого есть курсы высокого качества (а не случайные ненужные курсы Udemy). Я думаю, что после того, как кто-то изучит основы работы с инструментами, будет легко изучить и другие инструменты. Мне еще предстоит найти, какой инструмент соответствует моим критериям.

MasterJoe 05.03.2019 23:57

Поскольку этот вопрос закрыт, мне потребовалось больше времени, чтобы понять, что я могу просто использовать инструмент Pycharm Git для слияния.

Noumenon 19.03.2020 19:25

Закрытие этих типов вопросов как «основанных на мнении» - вот что создает разницу между Quora и SO. Давайте не позволим SO быть Quora.

Yaman K Singla 03.06.2020 10:08

@ChrisMarisic Как этот вопрос скрыт? Это просто закрыто.

Modus Tollens 03.06.2020 10:21

@ModusTollens, когда я опубликовал это, он находился в каком-то странном состоянии неопределенности, мой уровень привилегий был таким, каким я мог его тогда увидеть.

Chris Marisic 11.06.2020 22:07

Соглашаясь с некоторыми комментариями здесь, этот вопрос важен для меня, даже если он основан на мнении, потому что я ДОВЕРЯЮ переполнению стека для моих ответов, а не случайным мнениям, которые я нахожу в Google, которые я должен прочесать, когда сообщество переполнения стека будет дали мне ответ. Ключевой принцип разработки - не переделывать уже проделанную работу.

spacebread 21.12.2020 18:29

Связанный: stackoverflow.com/questions/14821358/…

Gabriel Staples 12.02.2021 22:23
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
631
17
442 749
18
Перейти к ответу Данный вопрос помечен как решенный

Ответы 18

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

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

User interface

как настроить его для работы с git?

Ryan Lundy 30.03.2011 01:59

@Kyralessa См. stackoverflow.com/questions/255202/…

Luke 31.03.2011 03:47

Спасибо, что представили мне его !! : D Этот инструмент чистый и требует меньше времени на установку и работу, чем meld. Полчаса пытаюсь установить meld. Но этот я сделал за 5 минут !!

om39a 10.03.2014 20:03

Примечание: diffmerge, похоже, не имеет функции трехстороннего слияния. Я отказываюсь от него после пары недель попыток по этой причине

StormeHawke 10.10.2014 19:30

Это хороший инструмент, который также может сравнивать папки. Проблема в том, что он медленный (MacBookPro 15 2014, MacOS Catalina)

emKaroly 05.01.2020 17:54
Ответ принят как подходящий

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

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

  • Ubuntu
  • Mac
  • Окна: «Рекомендуемая версия Meld для Windows - это самый последний выпуск, доступный как MSI от https://meldmerge.org»

Кого волнует ОС, которую использует оригинальный автор? Вопрос достаточно общий, чтобы заинтересовать всех, кто его ищет. А трехстороннее различие - это когда вы действительно видите 4 панели с тестом; база слияния / локальный / удаленный / результат

Evgeny 23.01.2011 16:16

meld утомителен со сложными различиями, возможность выбора таких параметров, как chose b for all unresolved conflicts, намного лучше, чем необходимость вручную щелкать правильную стрелку для каждого фрагмента в meld. Кроме того, возможность слияния с конкретным выходным файлом, а не редактирование входных файлов на месте, неоценимо для защиты от неудачных нервов.

Mark Booth 02.03.2011 21:51

Meld некорректно работает как инструмент слияния с git, поскольку показывает маркеры слияния.

slikts 22.12.2011 17:38

@jnnnnn Я могу подтвердить, что meld определенно работает с Windows. ему просто не хватает установщика.

n611x007 09.08.2012 19:45

@jooks meldmerge.org. Meld может быть не лучшим, но он отлично работает для меня :)

codefreak 14.02.2013 12:03

@naxa Meld теперь имеет установщик Windows: code.google.com/p/meld-installer

Roman 18.03.2013 15:01

Для Ubuntu это именно то, что мне нужно gist.github.com/fedir/7661179

Fedir RYKHTIK 26.11.2013 20:16

Теперь есть установщик meld windows (по крайней мере, 1.8). Зайдите на их сайт, и у них будет ссылка на Sourceforge. Был гугл-код, потом его перевели, кто знает, что будет. Итак, проверьте их сайт на наличие ссылки.

QueueHammer 30.04.2014 21:14

Ссылка на Mac не работает. Вот еще один: alexkras.com/…

rousseauo 29.09.2015 21:02

kdiff3 позволяет видеть 4 представления, meld допускает только 3 представления. Meld - это не настоящий инструмент слияния, это инструмент сравнения, поскольку он не показывает представление базовой версии.

Akira Yamamoto 05.05.2016 21:44

Примечание: вам необходимо установить python 3.3 или выше для последней версии meld.

vineet 10.01.2017 08:36

У Meld есть проблемы. Это действительно раздражает, когда меняют "Мои, а затем их". И иногда это трудно читать.

Morgan LaVigne 08.05.2017 18:41

Meld ужасен, особенно для слияний. У него нет возможности «автоматически переносить неконфликтные изменения», что делает каждое слияние ужасно болезненным.

Cerin 26.05.2017 01:40

На сайте нет https. Не пойдет.

Ryan 26.05.2019 00:34

@Ryan: в настоящее время сайт доступен через HTTPS, и на него есть перенаправление с обычного HTTP.

paprika 02.01.2020 01:36

Для Windows и Linux инструкции по установке meld, поэтому вы можете запустить git difftool, чтобы увидеть изменения файлов с помощью meld, вот мой ответ: stackoverflow.com/a/48979939/4561887.

Gabriel Staples 12.02.2021 22:24

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

+1: kdiff3 намного превосходит meld и также изначально поддерживается git.

Mark Booth 02.03.2011 21:37

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

Mikko Rantalainen 07.08.2013 14:03

kdiff3 позволяет видеть 4 представления, meld допускает только 3 представления. Meld - это не настоящий инструмент слияния, это инструмент сравнения, поскольку он не показывает представление базовой версии.

Akira Yamamoto 05.05.2016 21:41

kdiff3 в порядке, но он часто дает сбой с ошибками «Потеря данных», и в этом случае необходима альтернатива

user377178 02.10.2020 12:36

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

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

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

$ diffuse "mine" "output" "theirs"

Diffuse is a small and simple text merge tool written in Python. With Diffuse, you can easily merge, edit, and review changes to your code. Diffuse is free software.

Мне очень нравится диффузный стиль, и я не предвзята.

jturcotte 11.09.2009 17:16

@ Деррик Мозер: diffuse выглядит очень красиво. Я просто попробовал его сейчас, и он отличался лучше, чем kdiff3. Но я пытаюсь использовать его с git mergetool, и он открывает 4 файла рядом друг с другом (локальный, результат слияния, удаленный, базовый), и мой экран недостаточно широкий для этого. Пришлось делать много горизонтальной прокрутки. kdiff3 показывает только 3 рядом друг с другом и результат в нижней половине окна.

yairchu 09.12.2010 12:54

diffuse имеет некоторые дополнительные параметры слияния по сравнению с meld (позволяет объединить обе версии, а не выбирать одну из них).

Audrius Meskauskas 26.04.2013 19:24

diffuse из коробки работает в окнах, для сравнения двух папок, с репозиторием CVS, с репозиторием Git, слиянием конфликтов слияния git. Файлы diffuse diff открываются во вкладках в одном окне. Я переключился на диффузный (после использования emacs 'ediff (слишком много функций, полезных в 90-х)> vimdiff (нажатия клавиш сложных плагинов)> p4merge> araxis (proprietry)> meld (слишком медленно), tkdiff (только cvs)> kdiff3 (хорошо , хорошее регулярное выражение игнорирует функции)> winmerge (хорошо)> diffuse (быстро, переносимо, работает, как ожидалось)) в первый раз, когда я попробовал diffuse.

mosh 13.02.2018 05:41

Как изменить язык графического интерфейса в Diffuse?

zach 09.08.2018 12:49

gitx http://gitx.frim.nl/

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

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

Visualize the differences between file versions with P4Merge. Resolve conflicts that result from parallel or concurrent development via color coding.

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

  • Выделение и редактирование различий в текстовых файлах
  • Выберите включение или игнорирование окончаний строк или пробелов
  • Распознавать соглашения об окончании строки для Windows (CRLF), Mac (CR) и Unix (LF)
  • Используйте параметры командной строки и запускайте из приложений, не относящихся к Perforce
  • Отображение номеров строк при сравнении и объединении файлов
  • Исключить измененные, уникальные или неизмененные файлы
  • Фильтровать файлы по имени или расширению
  • Организуйте измененные активы в знакомой иерархии файлов / папок
  • Сравните JPEG, GIF, TIFF, BMP и другие форматы файлов
  • Расширить с помощью Qt API
  • Наложение изображений или отображение рядом
  • Подчеркивайте различия на наложенных изображениях

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

chovy 29.08.2015 13:11

Новая ссылка: perforce.com/downloads/helix#product-10

Brill Pappin 30.11.2015 18:58

Исправляет ссылку perforce.com/downloads/helix#clients

Al-Mothafar 23.03.2017 13:56

Начал пользоваться сегодня, и это довольно интуитивно понятно.

Resource 20.04.2018 18:26

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

Обратите внимание, что, поскольку p4merge (сейчас) является одним из официально поддерживаемых git mergetools, больше нет необходимости использовать переменную инструмент..cmd.

Matt Ball 03.05.2011 19:52

Убедитесь, что вы используете правильную цитату: stackoverflow.com/a/1217994/3543437

kayleeFrye_onDeck 22.03.2016 02:58

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

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

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

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

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

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


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

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

Perforce Merge великолепен. У него есть инструмент слияния с 4 панелями, который действительно помогает: Yours, theirs, Common Base, New

Gal 24.05.2011 04:17

P4 также является используется Google.

Wernight 02.08.2011 12:03

Вы можете индивидуально установить только P4Merge без остальной части принудительно.

Dirk Bester 11.05.2012 02:19

Последняя версия p4merge не имеет интерфейса «только для чтения». Вы можете редактировать объединенный файл на нижней панели.

Ian Ni-Lewis 21.11.2012 05:13

Это действительно отличный ответ и обсуждение. Спасибо, что поделились!

Mark Good 18.03.2015 01:04

Я использовал как P4Merge, так и Beyond Compare (BC). Компания, в которой я работал, имела лицензию на BC Pro. Каждый мог выбрать тот, который ему нужен, или мог загрузить свой собственный инструмент. Все использовали BC. Обратите внимание, что "Standard Edition" стоит 30 долларов, а версия "Pro" - 60 долларов на момент написания этой статьи. Никакой принадлежности, просто мне нравится их программное обеспечение. Это и Visual Assist. Мммм ...

Mark Storer 03.06.2020 21:46

vimdiff

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

:help vimdiff 

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

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

<3 vimdiff, я не могу понять, как убедить svn позволить мне использовать его как инструмент «слияния».

klokop 20.01.2011 21:00

gvimdiff также хорошо подходит для этой цели.

new123456 21.07.2011 15:19

Использование плагина Fugitive делает это еще проще! vimcasts.org/episodes/…

Erikw 20.01.2015 12:21

Если бы только был способ четко увидеть разницу между локальным / базовым и базовым / удаленным.

Ciro Santilli TRUMP BAN IS BAD 13.06.2019 19:18

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

Source: https://blog.jetbrains.com/dotnet/2017/03/13/rider-eap-update-version-control-database-editor-improvements/

Инструмент слияния Idea просто великолепен. он даже доступен в версии сообщества Idea, что означает, что вы можете использовать его бесплатно в качестве расширенного инструмента слияния - это то, что я делаю (в большинстве случаев я использую VSCode, где я работаю, и я использую Idea для сложных случаев слияния). VSCode тоже неплохо справляется, а иногда даже лучше, чем Idea. но для сложных случаев их трехпанельная компоновка - лучший инструмент, который я когда-либо видел

godblessstrawberry 10.10.2019 11:10

Я ненавижу то, что полоса прокрутки "сводка файлов" НЕ вместе! Основная причина, по которой мне нравится диффузный!

anthony 17.01.2020 09:44

не работал у меня

Gonzalo Garcia 23.07.2020 22:05

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

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

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

    DiffMerge

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

    Meld is a visual diff and merge tool

  • KDiff3, программа сравнения и слияния), которая сравнивает или объединяет 2 или 3 файла / каталога ввода текста.
  • opendiff (часть Xcode Tools в macOS), утилита командной строки, которая запускает приложение FileMerge из Терминала для графического сравнения файлов или каталогов, включая слияние.

git config --global merge.tool opendiff работал лучше всего для меня

James Matthew Mudgett 29.01.2020 20:05

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

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

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

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

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

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

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

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

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

Первым может быть вызвано:

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

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

Другие вопросы по теме