Допустим, у меня конфликт слияния. Я вижу конфликтующий файл как это:
Unstaged changes:
Unmerged Foo/bar/wibble/plop/elbow.txt
Я могу нажать вкладку здесь, чтобы открыть изменения и, возможно, перейти к точке внутри файла, чтобы исправить вручную, но если это большой файл с большим количеством конфликтов, это может занять много времени.
Как я могу попросить git, используя magit, проверить нашу или их версию файла, чтобы разрешить конфликт? Я могу скопировать путь, а затем использовать Shift-:
для ввода пользовательской команды git, но, похоже, для этого должен быть ярлык клавиатуры. Я не вижу ничего очевидного в меню Magit или во ?
всплывающем окне .
magit-status
и нажмите,e
чтобы начать трехстороннее объединение сediff
. Другой альтернативой является то, что в буфере конфликта вы можете включитьsmerge-mode
подсвечивание конфликтов и выполнять интерактивное слияние прямо в вашем буфере (не в ediff). Префикс ключа для связыванияsmerge-mode
связанных командC-c ^
; Вы можете нажать,C-c ^ C-h
чтобы просмотреть все привязки клавиш.k
на конфликте и выбрать, какую версию оставить. Звучит прекрасно! github.com/magit/magit/issues/1643Ответы:
Я не уверен, когда эта функция была добавлена, но она делает это отлично:
Merging master
, иUnstaged changes
,Staged changes
. Конфликтующий файл находится вUnstaged changes
k
чтобы отменить изменения (т. Е. Конфликтующие изменения)For <conflicted file> checkout: [o]ur stage, [t]heir stage, [c]onflict, or [C-g] to abort
источник
Есть несколько решений:
M-x smerge-ediff
. Он переведет вас в режим разрешения ediff с четырьмя открытыми буферами: ваш, их, объединить и буфер команд. В буфере команд вы можете использоватьn
иp
для перехода к следующему или предыдущему блоку, «a» или «b», чтобы принять изменение из первого или второго буфера, или вы можете перейти в буфер слияния и отредактировать его по своему вкусу.e
устойчивой версией magit, илиM-e
orM-m
(magit-ediff-resolve
) в следующей ветви magit, и тогда вы окажетесь в основном как в первом случаеC-c ^ n
иC-c ^ p
поможет вам перейти от ломоть к предыдущему или следующему, вы можете редактировать их или использовать ,C-c ^ o
чтобы держать «другой» вариант,C-c ^ m
чтобы сохранить «мое» версию,C-c ^ b
чтобы сохранить старое версия иC-c ^ a
сохранить их всех.источник