При слиянии веток под управлением исходного кода часто возникает проблема конфликта слияния с другими разработчиками.
Я знаю, что мы можем использовать vimdiff для сравнения изменений кода с контролем версий , но есть ли способ использовать vimdiff для разрешения конфликтов конфликтов слияния.
Лично меня больше интересует git, но было бы полезно понять, есть ли плагины / методы для других инструментов / систем контроля версий.
vimdiff
version-control-systems
merge
Мартин Йорк
источник
источник
feature rich UI
вводит в заблуждение; У vimdiff может не быть хорошего пользовательского интерфейса, он, безусловно, многофункциональный. Я также считаю, что vim гораздо более производительная среда, чем все редакторы графического интерфейса, которые я использовал (но я использовал ее в течение длительного времени, и это было крутой кривой обучения). Мне более любопытно, если Мелд сделает что-то, чего не делает vim, что стоило бы даже посмотреть.Ответы:
Я обычно использую git в командной строке.
Но когда возникает конфликт слияния, я использую Vim для их разрешения (лично я делаю это с помощью беглого плагина). Примечание: беглец хорош для большого количества мерзавцев из Vim. Моя любимая особенность - это трехсторонняя разница в конфликте слияний.
git поддерживает это в vimdiff через git mergetool. Я установил беглеца, но вы можете установить его вручную (спасибо @Jay Thompson).
Ручная настройка:
Вывод немного отличается от того, что описано ниже (я лично не использовал это). Но принцип тот же, но у вас есть четвертое окно внизу, содержащее результат.
Настроить с помощью Fugitive
vim-fugitive - плагин для git-оболочки / интеграции для Vim; он может делать много вещей, и разрешение конфликтов является одним из них.
Теперь вы можете вытащить и получить текст из двух других видов в центральный вид (который будет содержать все ручные исправления). После разрешения всех конфликтов вручную просто выйдите из vimdiff.
Хотя вы можете использовать
:diffget <view number>
и:diffput <view number>
тянуть и толкать вещи между взглядами. Лично я не нахожу это очень полезным. Весь код уже в среднем виде. Поэтому мне просто нравится редактировать это представление вручную, пока конфликт не будет разрешен. Возможность видеть обе версии кода по обе стороны окна моего редактора очень полезна.Также очень хорошая демонстрация его использования здесь
источник
git config --global merge.tool vimdiff
и запустить приложениеgit mergetool
vim в режиме diff.diff3 -E
. Таким образом, изображения выше генерируются из файлов, в которых есть эти маркеры.