Какой лучший инструмент для просмотра и редактирования слияния в Git? Я хотел бы получить трехстороннее представление слияния, с «моим», «их» и «предком» на отдельных панелях и четвертой панелью «вывода».
Кроме того, были бы отличными инструкции по запуску указанного инструмента. (Я до сих пор не понял, как запустить kdiff3 таким образом, чтобы он не выдавал мне ошибки.)
Моя ОС - Ubuntu.
Использование kdiff3 с git mergetool должно работать нормально. У меня с этим проблем не было.
Чтобы просто сравнить, выполните kdiff3 file1 file2a или kdiff3 file1 file2a file2b (это предполагает, что file1 является общим предком для file2a и file2b), и выполните трехстороннее слияние с этими файлами и выведите объединенный файл в file3, чтобы сделать kdiff3 -b file1 file2a file2b -o file3.
«Но сейчас это не разрешено», да, поэтому я ненавижу stackoverflow в наши дни. Без этих вопросов это слишком сухо и скучно.
Если бы этот вопрос был открытым, я бы ответил, предлагая xxdiff. 4 отображения файлов и различия на уровне слов в каждой строке
Есть ли сайт обмена стеками, на котором разрешен этот тип вопросов? Если нет, то должно быть ..
Похоже, пришло время для нового Stack Overflow, где такие вопросы разрешены. Очевидно, что, как многие утверждали, такие вопросы ценны для стольких людей, что закрывать их просто глупо. Я думаю, вы переборщили с бюрократией. Как насчет того, чтобы провести опрос по этому вопросу и узнать, чего хотят ваши «клиенты»? P
Есть softwarerecs.stackexchange.com
По-разному. kdiff3 и p4merge бесплатны и легко работают с git. kdiff3 имеет функцию --auto, которая полезна для написания сценариев. Я обнаружил, что p4merge значительно лучше автоматически разрешает конфликты.
Проблема: программное обеспечение бесполезно, потому что эксперты здесь, а не там.
Для меня лучшим инструментом будет тот, у которого есть курсы высокого качества (а не случайные ненужные курсы Udemy). Я думаю, что после того, как кто-то изучит основы работы с инструментами, будет легко изучить и другие инструменты. Мне еще предстоит найти, какой инструмент соответствует моим критериям.
Поскольку этот вопрос закрыт, мне потребовалось больше времени, чтобы понять, что я могу просто использовать инструмент Pycharm Git для слияния.
Закрытие этих типов вопросов как «основанных на мнении» - вот что создает разницу между Quora и SO. Давайте не позволим SO быть Quora.
@ChrisMarisic Как этот вопрос скрыт? Это просто закрыто.
@ModusTollens, когда я опубликовал это, он находился в каком-то странном состоянии неопределенности, мой уровень привилегий был таким, каким я мог его тогда увидеть.
Соглашаясь с некоторыми комментариями здесь, этот вопрос важен для меня, даже если он основан на мнении, потому что я ДОВЕРЯЮ переполнению стека для моих ответов, а не случайным мнениям, которые я нахожу в Google, которые я должен прочесать, когда сообщество переполнения стека будет дали мне ответ. Ключевой принцип разработки - не переделывать уже проделанную работу.
Связанный: stackoverflow.com/questions/14821358/…





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

как настроить его для работы с git?
@Kyralessa См. stackoverflow.com/questions/255202/…
Спасибо, что представили мне его !! : D Этот инструмент чистый и требует меньше времени на установку и работу, чем meld. Полчаса пытаюсь установить meld. Но этот я сделал за 5 минут !!
Примечание: diffmerge, похоже, не имеет функции трехстороннего слияния. Я отказываюсь от него после пары недель попыток по этой причине
Это хороший инструмент, который также может сравнивать папки. Проблема в том, что он медленный (MacBookPro 15 2014, MacOS Catalina)
Meld - это бесплатный кроссплатформенный (UNIX / Linux, OSX, Windows) инструмент сравнения / слияния с открытым исходным кодом.
Вот как его установить:
Кого волнует ОС, которую использует оригинальный автор? Вопрос достаточно общий, чтобы заинтересовать всех, кто его ищет. А трехстороннее различие - это когда вы действительно видите 4 панели с тестом; база слияния / локальный / удаленный / результат
meld утомителен со сложными различиями, возможность выбора таких параметров, как chose b for all unresolved conflicts, намного лучше, чем необходимость вручную щелкать правильную стрелку для каждого фрагмента в meld. Кроме того, возможность слияния с конкретным выходным файлом, а не редактирование входных файлов на месте, неоценимо для защиты от неудачных нервов.
Meld некорректно работает как инструмент слияния с git, поскольку показывает маркеры слияния.
@jnnnnn Я могу подтвердить, что meld определенно работает с Windows. ему просто не хватает установщика.
@jooks meldmerge.org. Meld может быть не лучшим, но он отлично работает для меня :)
@naxa Meld теперь имеет установщик Windows: code.google.com/p/meld-installer
Для Ubuntu это именно то, что мне нужно gist.github.com/fedir/7661179
Теперь есть установщик meld windows (по крайней мере, 1.8). Зайдите на их сайт, и у них будет ссылка на Sourceforge. Был гугл-код, потом его перевели, кто знает, что будет. Итак, проверьте их сайт на наличие ссылки.
Ссылка на Mac не работает. Вот еще один: alexkras.com/…
kdiff3 позволяет видеть 4 представления, meld допускает только 3 представления. Meld - это не настоящий инструмент слияния, это инструмент сравнения, поскольку он не показывает представление базовой версии.
Примечание: вам необходимо установить python 3.3 или выше для последней версии meld.
У Meld есть проблемы. Это действительно раздражает, когда меняют "Мои, а затем их". И иногда это трудно читать.
Meld ужасен, особенно для слияний. У него нет возможности «автоматически переносить неконфликтные изменения», что делает каждое слияние ужасно болезненным.
На сайте нет https. Не пойдет.
@Ryan: в настоящее время сайт доступен через HTTPS, и на него есть перенаправление с обычного HTTP.
Для Windows и Linux инструкции по установке meld, поэтому вы можете запустить git difftool, чтобы увидеть изменения файлов с помощью meld, вот мой ответ: stackoverflow.com/a/48979939/4561887.
Я слышал хорошие отзывы о kdiff3.
+1: kdiff3 намного превосходит meld и также изначально поддерживается git.
kdiff3 имеет гораздо больше функций, но meld имеет лучший пользовательский интерфейс. На мой взгляд, meld лучше подходит для простых слияний, когда возможностей meld достаточно. Не забудьте попробовать и diffuse.
kdiff3 позволяет видеть 4 представления, meld допускает только 3 представления. Meld - это не настоящий инструмент слияния, это инструмент сравнения, поскольку он не показывает представление базовой версии.
kdiff3 в порядке, но он часто дает сбой с ошибками «Потеря данных», и в этом случае необходима альтернатива
Если вы просто ищете инструмент сравнения, вне всякого сравнения, это неплохо: 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.
Мне очень нравится диффузный стиль, и я не предвзята.
@ Деррик Мозер: diffuse выглядит очень красиво. Я просто попробовал его сейчас, и он отличался лучше, чем kdiff3. Но я пытаюсь использовать его с git mergetool, и он открывает 4 файла рядом друг с другом (локальный, результат слияния, удаленный, базовый), и мой экран недостаточно широкий для этого. Пришлось делать много горизонтальной прокрутки. kdiff3 показывает только 3 рядом друг с другом и результат в нижней половине окна.
diffuse имеет некоторые дополнительные параметры слияния по сравнению с meld (позволяет объединить обе версии, а не выбирать одну из них).
diffuse из коробки работает в окнах, для сравнения двух папок, с репозиторием CVS, с репозиторием Git, слиянием конфликтов слияния git. Файлы diffuse diff открываются во вкладках в одном окне. Я переключился на диффузный (после использования emacs 'ediff (слишком много функций, полезных в 90-х)> vimdiff (нажатия клавиш сложных плагинов)> p4merge> araxis (proprietry)> meld (слишком медленно), tkdiff (только cvs)> kdiff3 (хорошо , хорошее регулярное выражение игнорирует функции)> winmerge (хорошо)> diffuse (быстро, переносимо, работает, как ожидалось)) в первый раз, когда я попробовал diffuse.
Как изменить язык графического интерфейса в Diffuse?
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.
Возможности включают в себя:
лучший из тех, что я видел до сих пор. легко разрешать конфликты, выбирая изменение из списка трехстороннего просмотра
Новая ссылка: perforce.com/downloads/helix#product-10
Исправляет ссылку perforce.com/downloads/helix#clients
Начал пользоваться сегодня, и это довольно интуитивно понятно.
Вы можете настроить свой собственный инструмент слияния для использования с «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.
Убедитесь, что вы используете правильную цитату: stackoverflow.com/a/1217994/3543437
Араксис Слияние 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
P4 также является используется Google.
Вы можете индивидуально установить только P4Merge без остальной части принудительно.
Последняя версия p4merge не имеет интерфейса «только для чтения». Вы можете редактировать объединенный файл на нижней панели.
Это действительно отличный ответ и обсуждение. Спасибо, что поделились!
Я использовал как P4Merge, так и Beyond Compare (BC). Компания, в которой я работал, имела лицензию на BC Pro. Каждый мог выбрать тот, который ему нужен, или мог загрузить свой собственный инструмент. Все использовали BC. Обратите внимание, что "Standard Edition" стоит 30 долларов, а версия "Pro" - 60 долларов на момент написания этой статьи. Никакой принадлежности, просто мне нравится их программное обеспечение. Это и Visual Assist. Мммм ...
vimdiff
После того, как вы изучили vim (а вам следует это сделать, IMHO), vimdiff станет еще одной красивой маленькой ортогональной концепцией, которую нужно изучить. Чтобы получить онлайн-справку в vim:
:help vimdiff
В этом вопросе рассказывается, как его использовать: Как использовать vimdiff для разрешения конфликта?

Если вы застряли в темноте использования мыши, а файлы, которые вы объединяете, не очень большие, я рекомендую объединить.
<3 vimdiff, я не могу понять, как убедить svn позволить мне использовать его как инструмент «слияния».
gvimdiff также хорошо подходит для этой цели.
Использование плагина Fugitive делает это еще проще! vimcasts.org/episodes/…
Если бы только был способ четко увидеть разницу между локальным / базовым и базовым / удаленным.
IntelliJ IDEA имеет сложную инструмент разрешения конфликтов слияния с волшебной палочкой Resolve, которая значительно упрощает слияние:
Инструмент слияния Idea просто великолепен. он даже доступен в версии сообщества Idea, что означает, что вы можете использовать его бесплатно в качестве расширенного инструмента слияния - это то, что я делаю (в большинстве случаев я использую VSCode, где я работаю, и я использую Idea для сложных случаев слияния). VSCode тоже неплохо справляется, а иногда даже лучше, чем Idea. но для сложных случаев их трехпанельная компоновка - лучший инструмент, который я когда-либо видел
Я ненавижу то, что полоса прокрутки "сводка файлов" НЕ вместе! Основная причина, по которой мне нравится диффузный!
не работал у меня
Если вы используете визуальная студия, встроенный инструмент Team Explorer - очень хороший инструмент для разрешения конфликтов слияния git.
Итак, для git merge вы можете попробовать:
DiffMerge для визуального сравнения и объединения файлов в Windows, OS X и Linux.
Meld, это инструмент визуального сравнения и слияния.
opendiff (часть Xcode Tools в macOS), утилита командной строки, которая запускает приложение FileMerge из Терминала для графического сравнения файлов или каталогов, включая слияние.git config --global merge.tool opendiff работал лучше всего для меня
Я пробовал много инструментов, упомянутых здесь, и ни один из них не совсем то, что я ищу.
Лично я считаю Атом отличным инструментом для визуализации различий и разрешения / слияния конфликтов.
Что касается слияния, то здесь нет трех представлений, но все они объединены в одно с цветным выделением для каждой версии. Вы можете редактировать код напрямую, или есть кнопки для использования той версии этого фрагмента, которую вы хотите.
Я даже больше не использую его как редактор или 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.
Для какой ОС вам нужны инструкции?