Может ли git применять маркеры остаточного конфликта inline как git rebase?

git rebase оставляет маркеры конфликтов встроенными в файлы; что-то вроде:

<<<<<<< HEAD
Whatever line + context is different from the previous commit
=======
Whatever line + context is different from the commit being applied
>>>>>>> new version, new branch:app/views/common/version.txt

Когда я использую git применительно к применению патча, созданного с помощью git format-patch, он не сможет оставить файлы, измененные по умолчанию. Я могу дать ему --reject, который заставит его создавать файлы .rej для тех, у которых есть неразрешимые конфликты, но на самом деле я хочу, чтобы он изменял файлы и оставлял все в состоянии, которое выполняет git rebase, поэтому я могу просто открыть файл, вручную слить его, а затем git добавить его и сообщить git применить для продолжения. Есть ли способ сделать это, о котором я просто не знаю?

Ответ 1

Для меня следующие работы:

git init
seq 1 30 > file
git add file
git commit -m 1-30
sed -i '13a13.4' file
git commit -m 'add 13.4' file
git format-patch -1
git reset --hard HEAD^
sed -i 13d file
git commit -m 'remove 13' file
git am -3 0001-add-13.4.patch

После этого file имеют маркеры конфликтов. Это используется git am -3 вместо git apply.

Ответ 2

Используйте параметр с трехсторонним слиянием:

git apply -3 0001-patch.patch