Введение

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

Цель

Разрешите конфликт, возникший из-за слияния двух веток git в vim.

Шаги

После того, как вы объединили ветки, вы можете сделать :Gstatus внутри vim, чтобы увидеть статус файлов.

  1. Нажмите Enter на файле, конфликты которого вы хотите разрешить.
  2. Вышеупомянутый шаг откроет файл в новом буфере.
  3. Перейдите к буферу, в котором открыт конфликтующий файл, затем выполните :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 г.