Как оформить заказ на файл в magit?

16

Допустим, у меня конфликт слияния. Я вижу конфликтующий файл как это:

Unstaged changes:
    Unmerged   Foo/bar/wibble/plop/elbow.txt

Я могу нажать вкладку здесь, чтобы открыть изменения и, возможно, перейти к точке внутри файла, чтобы исправить вручную, но если это большой файл с большим количеством конфликтов, это может занять много времени.

Как я могу попросить git, используя magit, проверить нашу или их версию файла, чтобы разрешить конфликт? Я могу скопировать путь, а затем использовать Shift-:для ввода пользовательской команды git, но, похоже, для этого должен быть ярлык клавиатуры. Я не вижу ничего очевидного в меню Magit или во ?всплывающем окне .

tenpn
источник
3
Хотя это не дает прямого ответа на ваш вопрос, но может оказаться полезным. Переместите точку в файле конфликта magit-statusи нажмите, eчтобы начать трехстороннее объединение с ediff. Другой альтернативой является то, что в буфере конфликта вы можете включить smerge-modeподсвечивание конфликтов и выполнять интерактивное слияние прямо в вашем буфере (не в ediff). Префикс ключа для связывания smerge-modeсвязанных команд C-c ^; Вы можете нажать, C-c ^ C-hчтобы просмотреть все привязки клавиш.
Ту До
Я не нахожу "наши" или "их" в документе. magit.github.io/master/magit.html#Pushing-and-Pulling
Эхвинс
1
Похоже, хороший вопрос, чтобы открыть запрос функции?
Ehvince
1
хорошая идея @Ehvince, готово: github.com/magit/magit/issues/1643
tenpn
1
Оооо: в следующей версии magit вы можете kна конфликте и выбрать, какую версию оставить. Звучит прекрасно! github.com/magit/magit/issues/1643
tennn

Ответы:

16

Я не уверен, когда эта функция была добавлена, но она делает это отлично:

  1. Объединить одну ветку в другую и столкнуться с конфликтом
  2. В Magit буфере, будут разделы для Merging master, и Unstaged changes, Staged changes. Конфликтующий файл находится вUnstaged changes
  3. В строке с конфликтующим файлом нажмите, kчтобы отменить изменения (т. Е. Конфликтующие изменения)
  4. В минибуфере вы увидите ответ:

For <conflicted file> checkout: [o]ur stage, [t]heir stage, [c]onflict, or [C-g] to abort

Hut8
источник
5

Есть несколько решений:

  • используйте smerge-ediff. В файл с конфликтом вы запускаете M-x smerge-ediff. Он переведет вас в режим разрешения ediff с четырьмя открытыми буферами: ваш, их, объединить и буфер команд. В буфере команд вы можете использовать nи pдля перехода к следующему или предыдущему блоку, «a» или «b», чтобы принять изменение из первого или второго буфера, или вы можете перейти в буфер слияния и отредактировать его по своему вкусу.
  • используйте ediff от magit, с eустойчивой версией magit, или M-eor M-m( magit-ediff-resolve) в следующей ветви magit, и тогда вы окажетесь в основном как в первом случае
  • есть также smerge-режим, C-c ^ nи C-c ^ pпоможет вам перейти от ломоть к предыдущему или следующему, вы можете редактировать их или использовать , C-c ^ oчтобы держать «другой» вариант, C-c ^ mчтобы сохранить «мое» версию, C-c ^ bчтобы сохранить старое версия и C-c ^ aсохранить их всех.
  • Вы можете использовать magit-find-file, чтобы открыть файл, как это было в некотором коммите.
Рэй
источник
Я не видел, чтобы у Ту До уже было большинство ответов, которые я публикую здесь. Сори
Реми
Спасибо за исчерпывающий список, но я думаю, что ответ на вопрос "есть ли краткий способ получить версию" Наши "или" Thiers "- нет. :(
tenpn