
Введение
vim однозначно лучший (ИМХО) редактор для редактирования любого текста на компьютере и git для ведения версий. При работе с git довольно часто случаются конфликты при ветках merging или rebasing, но, к сожалению, я не нашел удобного способа разрешения конфликтов. В подобных ситуациях я прибегал к vscode, у которого был отличный интуитивный способ сделать то же самое. Здесь я рад сообщить, что наконец-то достиг vscode уровня интуитивности и комфорта в vim ‹3. Следите за ноу-хау.
Цель
Разрешите конфликт, возникший из-за слияния двух веток git в vim.
Шаги
После того, как вы объединили ветки, вы можете сделать :Gstatus внутри vim, чтобы увидеть статус файлов.

- Нажмите Enter на файле, конфликты которого вы хотите разрешить.
- Вышеупомянутый шаг откроет файл в новом буфере.
- Перейдите к буферу, в котором открыт конфликтующий файл, затем выполните
:Gvdiffsplit, чтобы открыть файл в трехстороннем разделении, как показано ниже.

Левое разделение называется ветвью target, это текущее состояние файла при попытке слияния, т.е. текущие изменения. Средняя — это копия working, в которой фиксируется разрешенное конечное состояние. Крайний правый раздел называется ветвью merge, в нем есть изменения из ветки, которая объединяется, с веткой, на которой мы находимся, т. е. входящие изменения.
4. Вы можете перейти к следующему конфликту, используя ]c, и к предыдущему конфликту, используя [c.< br /> 5. В каждом конфликте вам нужно решить, какие изменения вы хотите, либо вы можете принять изменения из ветки target, выполнив :diffget //2, либо вы можете принять изменения из ветки merge, выполнив :diffget //3, все из ветки working. Вы также можете использовать :diffput, но я предпочитаю :diffget.
6. Если подсветка синтаксиса не меняется даже после разрешения конфликта, вы можете использовать :diffupdate для обновления рабочей копии. Хорошо сделать :diffupdate после разрешения конфликтов.
7. Если вы хотите внести оба изменения, лучшим вариантом будет ручное копирование из target и merge разбиений.
8. Вы также можете использовать :Gwrite на любом target или раздел merge, который вы хотите полностью изменить.
9. После того, как все конфликты разрешены, вы можете выполнить :only из раздела, который хотите сохранить, и выйти из режима vimdiff.
Вывод
После разрешения конфликтов вы должны выполнить git merge --continue после подготовки изменений, выполнив git add <files>.
Существует несколько способов разрешения конфликтов, позвольте мне рассказать, как вы это делаете, в vim ;)
Найди меня в твиттере
Первоначально опубликовано на https://souvikhaldar.info 28 сентября 2020 г.