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


481

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

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

Моя ОС - Ubuntu.

  0

О какой ОС вы хотите получить инструкции? 26 сен. 082008-09-26 00:45:49

+2

Использование kdiff3 с "git mergetool" должно работать нормально. У меня не было проблем с этим. 30 сен. 102010-09-30 14:05:09

  0

Чтобы просто установить diff, сделайте 'kdiff3 file1 file2a' или' kdiff3 file1 file2a file2b' (это предполагает, что 'file1' является обычным предком' file2a' и 'file2b') и выполняет три способа слияния с этими файлами и вывод объединенного файла в файл 'file3' do' kdiff3 -b file1 file2a file2b -o file3'. 02 мар. 112011-03-02 18:45:14

+3

«Но теперь это не разрешено» да, вот почему я ненавижу stackoverflow сегодня. Без этих вопросов это слишком сухо и скучно. 03 мар. 162016-03-03 00:50:21

  0

Если этот вопрос был открыт, я бы сделал ответ, предлагая [xxdiff] (http://furius.ca/xxdiff/). 4 отображения файлов и разности уровней слов в каждой строке 02 июл. 162016-07-02 12:05:30

+2

Есть ли сайт стека, в котором этот вопрос разрешен? Если нет, то должно быть ... 07 июл. 162016-07-07 00:58:34

+2

Кажется, что пришло время для нового переполнения стека, где такие вопросы разрешены. Ясно, что многие из таких вопросов ценны для многих людей, что глупо их закрывать. Я думаю, вы перешли на борт с бюрократией. Как насчет того, чтобы вы сделали опрос по этой проблеме и посмотрели, чего хотят ваши «клиенты», P 09 сен. 162016-09-09 11:49:23

+1

Существует https://softwarerecs.stackexchange.com/ 13 фев. 172017-02-13 16:34:49

  0

Это зависит. kdiff3 и p4merge свободны и легко работают с git. kdiff3 имеет функцию -auto, которая полезна для скриптов. Я обнаружил, что p4merge значительно лучше при автоматическом разрешении конфликтов. 06 апр. 172017-04-06 17:23:19

  0

Проблема: softwarerecs бесполезен, потому что эксперты здесь, а не там. 27 июн. 172017-06-27 17:09:27

283

Meld является инструментом сравнения/слияния.

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

  • Ubuntu
  • Mac
  • Windows: "Рекомендуемая версия Meld для Windows, является самым последним релиз, доступный как MSI от http://meldmerge.org"
+2

Нет версии Windows, насколько я могу судить, и не использует 3-стороннее представление, что означает, что вы не получите предварительный просмотр окончательной версии. 26 сен. 082008-09-26 00:45:04

+49

У этого действительно есть 3-сторонний вид, а оригинальный плакат работает под управлением Linux, а не Windows, поэтому я не понимаю, почему это проблема. 26 сен. 082008-09-26 07:21:10

+48

, который интересуется ОС, которую использует оригинальный автор ?, вопрос достаточно общий, чтобы представлять интерес для всех, кто его ищет. И 3-way diff - это когда вы на самом деле видите 4 панели с тестом; merge-base/local/remote/result 23 янв. 112011-01-23 13:16:41

+10

'meld' утомительно с сложными различиями, возможность выбора опций, таких как' selected b для всех неразрешенных конфликтов', намного лучше, чем вручную щелкнуть по правильной стрелке для каждого куска в ' meld'. Кроме того, возможность слиться в определенный выходной файл, а не редактировать входные файлы на месте, неоценима для поддержки отказавших мошенников. 02 мар. 112011-03-02 18:51:52

+17

Meld отлично работает на окнах, сначала нужно установить python, а затем pygtk. Затем переименуйте bin/meld в meld.py и дважды щелкните по нему. 21 апр. 112011-04-21 00:06:55

  0

Meld не работает правильно, как инструмент слияния с git, поскольку он показывает маркеры слияния. 22 дек. 112011-12-22 13:38:10

+4

Является ли Meld действительно лучшим вариантом? На мой взгляд, это уродливо и неинтуитивно. 04 мар. 122012-03-04 14:56:18

  0

@jnnnnn Я могу подтвердить, что meld определенно работает над окнами. ему просто не хватает установщика. 09 авг. 122012-08-09 15:45:20

  0

Ссылка Ubuntu сейчас мертва, если вы можете ее обновить? :) 13 фев. 132013-02-13 14:47:57

+1

@jooks http://meldmerge.org/. Meld, возможно, не самый лучший, но он отлично работает для меня :) 14 фев. 132013-02-14 08:03:59

+3

@naxa У Meld теперь есть установщик Windows: https://code.google.com/p/meld-installer/ 18 мар. 132013-03-18 11:01:49

+2

Боже, сколько лет этому ? Fink для OS X? 26 мар. 132013-03-26 17:03:48

  0

Для Ubuntu это именно то, что мне было нужно https://gist.github.com/fedir/7661179 26 ноя. 132013-11-26 16:16:24

+2

Теперь у вас установлен инсталлятор meld windows (как минимум, 1,8). Зайдите на их сайт, и у них есть ссылка на Sourceforge. Был ли Google Code, а затем он двигался, кто знает, что произойдет. Итак, проверьте их сайт на ссылку. 30 апр. 142014-04-30 17:14:12

  0

Спасибо, что ты сделал мой день. 13 июл. 152015-07-13 10:26:43

  0

Ссылка для Mac отсутствует. Вот еще один: http://www.alexkras.com/how-to-run-meld-on-mac-os-x-yosemite-without-homebrew-macports-or-think/ 29 сен. 152015-09-29 18:02:57

+1

'mild' do not работайте хорошо, когда конфликты в git, 'p4merge' лучше. 04 фев. 162016-02-04 15:23:46

  0

Я использую визуальный инструмент git в NetBeans, и он работает как шарм для меня. 12 апр. 162016-04-12 09:14:29

+2

kdiff3 позволяет видеть 4 вида, meld позволяет только 3 вида. Meld не является реальным инструментом слияния, это инструмент сравнения, поскольку он не отображает представление базовой версии. 05 май. 162016-05-05 18:44:50

  0

Примечание: вам нужно установить python 3.3 или более поздней версии для последнего 'meld'. 10 янв. 172017-01-10 05:36:18

+1

У Meld есть некоторые проблемы. Это делает его очень раздражающим, чтобы изменить «Mine then theirs». Иногда это трудно читать. 08 май. 172017-05-08 15:41:38

+2

Meld ужасен, особенно для слияний. У него нет возможности «автоматически переносить нескончаемые изменения», что делает каждое слияние ужасно болезненным. 25 май. 172017-05-25 22:40:13


38

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

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

User interface

+3

Как настроить его для работы с git? 29 мар. 112011-03-29 21:59:56

+2

@Kyralessa См. Http://stackoverflow.com/questions/255202/how-do-i-view-git-diff-output-with-visual-diff-program 30 мар. 112011-03-30 23:47:10

  0

Примечание, бесплатно скачать. 22 фев. 122012-02-22 09:38:51

+2

Спасибо, что представили его мне! : D Этот инструмент чист и занимает меньше времени для установки и работы с чем-либо. Я провожу полчаса, пытаясь установить meld. Но это я сделал за 5 минут! 10 мар. 142014-03-10 16:03:05

+1

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


34

Я слышал хорошие вещи о kdiff3, кажется, между этим и meld (что еще один плакат уже придает STED).

+3

+1: kdiff3 намного превосходит meld и также поддерживается git. 02 мар. 112011-03-02 18:37:42

+3

'kdiff3' имеет гораздо больше возможностей, но' meld' имеет лучший интерфейс. На мой взгляд, 'meld' лучше для легкого слияния, где возможностей, предоставляемых' meld', достаточно. Не забудьте попробовать 'diffuse', тоже. 07 авг. 132013-08-07 10:03:06

  0

kdiff3 позволяет видеть 4 вида, meld позволяет только 3 вида. Meld не является реальным инструментом слияния, это инструмент сравнения, поскольку он не отображает представление базовой версии. 05 май. 162016-05-05 18:41:53


7

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


6

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


15

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

$ diffuse "mine" "output" "theirs" 

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

+1

Мне очень нравится диффузно, и я не предвзятый. 11 сен. 092009-09-11 13:16:01

+2

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

  0

diffuse имеет несколько дополнительных параметров слияния по сравнению с meld (позволяет присоединяться к обеим версиям, а не выбирать один из них). 26 апр. 132013-04-26 15:24:50

  0

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


-1

gitx http://gitx.frim.nl/

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

  0

gitx только делает diff, правильно? 16 янв. 102010-01-16 01:14:05

+4

Недоступно под Ubuntu 13 сен. 102010-09-13 14:03:21


19

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

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

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

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

лучшее, что я видел до сих пор. легко разрешать конфликты, выбирая изменение из списка трехстороннего представления 29 авг. 152015-08-29 10:11:36

  0

Новая ссылка: https://www.perforce.com/downloads/helix#product-10 30 ноя. 152015-11-30 15:58:14

  0

Исправить ссылку https://www.perforce.com/ downloads/helix # clients 23 мар. 172017-03-23 10:56:49


77

Вы можете настроить свой собственный инструмент слияния, который будет использоваться с «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 вы не» t хочу, чтобы $BASE получил синтаксический анализ в качестве переменной вашей оболочки - он должен действительно отображаться в вашем файле ~/.gitconfig, чтобы это работало.

+1

P4Merge делает это для меня. 16 июн. 102010-06-16 07:42:08

+8

Обратите внимание, что поскольку p4merge (сейчас) является одним из официально поддерживаемых git mergetools, не должно быть необходимости гадать с переменной * tool. *. Cmd. 03 май. 112011-05-03 15:52:46

+1

Убедитесь, что вы используете правильную цитату: http://stackoverflow.com/a/1217994/3543437 21 мар. 162016-03-21 23:58:22


11

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


1

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


57

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

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

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

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


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

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

+6

Perforce Merge отлично. Он имеет инструмент слияния с четырьмя панелями, который действительно помогает: ваш, их, общая база, новый 24 май. 112011-05-24 00:17:03

+2

P4 также [используется Google] (http://www.quora.com/What-version-control-system-does- Google потребительной и-почему). 02 авг. 112011-08-02 08:03:16

+3

Вы можете настраивать только P4Merge без остальной силы. 10 май. 122012-05-10 22:19:44

+4

В последней версии p4merge нет интерфейса «только для чтения». Вы можете редактировать объединенный файл в нижней панели. 21 ноя. 122012-11-21 01:13:41

  0

Это действительно отличный ответ и дискуссия. Спасибо, что поделились! 17 мар. 152015-03-17 22:04:39


20

vimdiff

После того, как вы узнали Vim (и ИМХО надо), vimdiff только один краше немного ортогональная концепции учиться. Чтобы получить помощь в Vim:

:help vimdiff 

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

  0

<3 vimdiff, я не могу понять, как убедить svn позволить мне использовать его как инструмент слияния. 20 янв. 112011-01-20 18:00:16

  0

gvimdiff также хорошо работает для этой цели. 21 июл. 112011-07-21 11:19:50

+1

Использование плагина Fugitive делает его еще проще! http://vimcasts.org/episodes/fugitive-vim-resolving-merge-conflicts-with-vimdiff/ 20 янв. 152015-01-20 09:21:00


5

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

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


0

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


0

Так что для мерзавца слияния, вы можете попробовать:

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

    DiffMerge

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

    Meld is a visual diff and merge tool

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

1

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

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

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

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

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

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

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


0

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

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

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

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

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