Какой лучший инструмент визуального слияния для Git?
Какой лучший инструмент для просмотра и редактирования слияния в Git? Я хотел бы получить трехстороннее представление слияния с "моим", "их" и "предком" на отдельных панелях и четвертой "выходной" панелью.
Также были бы полезны инструкции по вызову указанного инструмента. (Я до сих пор не понял, как запустить kdiff3 таким образом, чтобы он не выдавал ошибку.)
Моя ОС - Ubuntu.
18 ответов
Meld - это инструмент сравнения / слияния.
Вот как это установить:
- Ubuntu
- макинтош
- Windows: "Рекомендованная версия Meld для Windows является самой последней версией, доступной в виде MSI с http://meldmerge.org/"
Вы можете настроить свой собственный инструмент слияния для использования с "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, чтобы это работало.
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, у вас действительно будет не одна база, а две. Два базовых, два изменения и одно полученное слияние.
IntelliJ IDEA имеет изощренный инструмент разрешения конфликтов слияния с волшебной палочкой Resolve, которая значительно упрощает слияние:
Мой любимый инструмент визуального слияния - SourceGear DiffMerge
- Это свободно.
- Кроссплатформенность (Windows, OS X и Linux).
- Чистый визуальный интерфейс
- Все функции сравнения, которые вы ожидаете (Diff, Merge, Folder Diff).
- Интерфейс командной строки.
- Полезные сочетания клавиш.
vimdiff
Как только вы изучите vim (и, по-моему, вы должны это сделать), vimdiff - это еще одна красивая маленькая ортогональная концепция для изучения. Чтобы получить онлайн-справку в vim:
:help vimdiff
Если вы застряли в темных веках использования мыши, а файлы, которые вы объединяете, не очень большие, я рекомендую объединить.
Вы можете попробовать P4Merge.
Визуализируйте различия между версиями файлов с помощью P4Merge. Разрешение конфликтов, возникающих в результате параллельной или параллельной разработки с помощью цветового кодирования.
Особенности включают в себя:
- Выделить и редактировать различия текстовых файлов
- Выберите, чтобы включить или игнорировать окончания строки или пробелы
- Распознавать соглашения о конце строки для Windows (CRLF), Mac (CR) и Unix (LF)
- Использовать параметры командной строки и запускать из не-приложений Perforce
- Отображать номера строк при сравнении и объединении файлов
- Исключить файлы, которые изменены, уникальны или неизменны
- Фильтровать файлы по имени или расширению
- Организовать измененные активы в привычной иерархии файлов / папок
- Сравните JPEG, GIF, TIFF, BMP и другие форматы файлов
- Расширить использование Qt API
- Наложение изображений или отображение рядом
- Выделите различия на наложенных изображениях
Диффузный - мой любимый, но, конечно, я предвзятый.:-) Он очень прост в использовании:
$ diffuse "mine" "output" "theirs"
Diffuse - это небольшой и простой инструмент для слияния текста, написанный на Python. С Diffuse вы можете легко объединять, редактировать и просматривать изменения в вашем коде. Diffuse - это свободное программное обеспечение.
Araxis Merge http://www.araxis.com/merge Я использую его на Mac OS X, но я использовал его на Windows... это не бесплатно... но у него есть некоторые приятные функции... приятнее на окна хотя.
Если вы просто ищете инструмент сравнения вне всяких сравнений, то это неплохо: http://www.scootersoftware.com/moreinfo.php
Вы можете изменить инструмент, используемый git mergetool, передав git mergetool -t=<tool>
или же --tool=<tool>
, Чтобы изменить значение по умолчанию (из vimdiff), используйте git config merge.tool <tool>
,
Так что для мерзкого слияния, вы можете попробовать:
DiffMerge для визуального сравнения и объединения файлов в Windows, OS X и Linux.
Meld, визуальный инструмент сравнения и слияния.
- KDiff3, программа сравнения и слияния), которая сравнивает или объединяет 2 или 3 текстовых входных файла / каталога.
opendiff
(часть Xcode Tools на macOS), утилита командной строки, которая запускает приложение FileMerge из терминала для графического сравнения файлов или каталогов, включая слияние.
Если вы используете Visual Studio, встроенный инструмент Team Explorer - очень хороший инструмент для разрешения конфликтов git-merge.
Я использую разные инструменты для слияния и сравнения:
git config --global diff.tool diffuse
git config --global merge.tool kdiff3
Кулак может быть вызван:
git difftool [BRANCH] -- [FILE or DIR]
Второй вызывается при использовании git mergetool
,
Я перепробовал много инструментов, упомянутых здесь, и ни один из них не был тем, что я искал.
Лично я нашел Atom отличным инструментом для визуализации различий и разрешения конфликтов / слияния.
Что касается слияния, то здесь нет трех видов, но все они объединены в одно с цветной подсветкой для каждой версии. Вы можете редактировать код напрямую или использовать кнопки для выбора любой версии этого фрагмента.
Я даже больше не использую его как редактор или IDE, просто для работы с git. Чистый пользовательский интерфейс и очень простой, плюс он очень настраиваемый.
Вы можете запустить его из командной строки и передать в один файл, который вы хотите открыть, или добавить папку вашего проекта (git repo).
- Я бы также рекомендовал менеджер проектов как очень удобный способ навигации между проектами без заполнения дерева.
Единственная проблема, с которой я столкнулся, это обновление - при работе с большими репозиториями атом может медленно обновлять изменения, которые вы делаете вне его. Я просто всегда закрываю его, когда заканчиваю, а затем снова открываю, когда хочу снова просмотреть свои изменения / коммит. Вы также можете перезагрузить окно с помощью Ctrl+ Shift+ F5, что занимает всего секунду.
И это бесплатно, конечно.
Вы можете установить утилиту сравнения / слияния ECMerge на Linux, Mac или Windows. Это предварительно настроено в Git, так что просто с помощью git mergetool
сделаю работу.
gitx http://gitx.frim.nl/
Некоторые ошибки при работе с большими наборами коммитов, но отлично подходят для просмотра изменений и выбора различных изменений на этапе, а затем для фиксации.