Может ли 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