В mergetool, если у вас более 2 буферов, вы не можете использовать :diffget
, так как Vim не знает, из какого файла получить diff.
Однако, когда вы решаете конфликт (вам нужно запустить mergetool
), у вас есть несколько файлов, созданных Git для управления конфликтом:
Unmerged paths:
(use "git reset HEAD <file>..." to unstage)
(use "git add <file>..." to mark resolution)
both modified: my/conflicting/file.py
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env
my/conflicting/file.py.orig
my/conflicting/file_BACKUP_5038.py
my/conflicting/file_BASE_5038.py
my/conflicting/file_LOCAL_5038.py
my/conflicting/file_REMOTE_5038.py
Они представляют разные стороны конфликта:
- BACKUP - копия файла с маркерами конфликтов,
- LOCAL - ваше текущее состояние до конфликта,
- BASE содержит состояние файла при общей фиксации предка между вашей локальной версией и слитой (или применяется в случае ребазирования, выбора вишни или всплытия / применения тайника),
- REMOTE - это коммит, который пытается быть применен <--- это та версия, которую вы хотите в вашем случае </li>
Итак, вы можете скопировать файл _REMOTE_
в качестве текущего (cp path/to/file_REMOTE_* path/to/file
) или в mergetool скопировать содержимое _REMOTE_
(:%y
) и заменить его содержимым вашего файла. (ggVGp
, перейти наверх, перейти в режим визуальной линии, перейти к концу, вставить).