Вы можете попробовать smerge-mode
просто открыть конфликтующий файл и сделать M-xsmerge-mode
RET. Здесь будут освещены все конфликтующие регионы. Он также добавляет сочетания клавиш, чтобы легко разрешать конфликты, ознакомьтесь с документацией, C-hfsmerge-mode
RETчтобы узнать их.
Префикс по умолчанию
Я нахожу префикс по умолчанию для smerge-mode
C-c^громоздких, поэтому я изменил его на C-cv
(setq smerge-command-prefix "\C-cv")
Важные сочетания клавиш
Для меня самые важные привязки:
smerge-next
обязан smerge-command-prefixnперейти к следующему конфликту.
smerge-previous
обязан smerge-command-prefixpперейти к предыдущему конфликту.
smerge-keep-current
обязан smerge-command-prefixRETсохранить версию, в которой находится курсор.
smerge-keep-mine
обязан smerge-command-prefixmсохранить ваши изменения.
smerge-keep-other
обязан smerge-command-prefixoсохранить другие изменения.
smerge-ediff
обязан smerge-command-prefixEначать сеанс ediff, чтобы объединить конфликты. Это так же, как vc-resolve-conflicts
(спасибо @phils и @Malabarba за то, что указал на это).
Включение режима smerge автоматически
ОБНОВЛЕНИЕ: Следующее относится только к предыдущим версиям Emacs 25.1
, следующее может вызвать проблемы в более поздних версиях, см. Https://github.com/magit/magit/issues/3897
Кроме того, вам может быть интересно автоматическое включение smerge-mode
при посещении файла / буфера с маркерами конфликта, вы можете использовать что-то вроде следующего для достижения этой цели
(defun my-enable-smerge-maybe ()
(when (and buffer-file-name (vc-backend buffer-file-name))
(save-excursion
(goto-char (point-min))
(when (re-search-forward "^<<<<<<< " nil t)
(smerge-mode +1)))))
(add-hook 'buffer-list-update-hook #'my-enable-smerge-maybe)
Обратите внимание, что я использую, buffer-list-update-hook
и нет, find-file-hook
так как в большинстве случаев я получаю конфликты в буфере, который уже открыт в Emacs, и в этом случае find-file-hook
это не поможет.
Также проверьте другие методы, упомянутые в этом ответе
e
на файлы, показанные как конфликтующие. Magit запуститediff
процесс слияния и предложит вам подтвердить изменения, после чего вы сможете создать объединенный файл.