Как заставить git merge генерировать конфликт для всего файла или всех файлов, которые отличаются, чтобы генерировать конфликт, имеющий полностью старую и совершенно новую версию, пример такого файла:
<<<<<<<<<<A
A
B
C
D
OLD
OLD
OLD
E
F
G
...
Z
============
A
B
C
D
NEW
NEW
NEW
EEEEEEE
FFFFF
GGG
...
Z
>>>>>>>>>>B
Идея состоит в том, что я хотел бы объединить вручную все содержимое двух файлов, без метра, если строки совпадают или одна ветвь наследует от всего предыдущего, пример:
$ echo ABC > file
$ git add file
$ git commit -m '+) file = ABC'
[master 6e91bce] +) file += ABC
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 file
$ git checkout -b new_branch
Switched to a new branch 'new_branch'
$ echo DEF >> file
$ git add file
$ git commit -m '+) file += DEF'
[new_branch 27e29bf] +) file += DEF
1 files changed, 1 insertions(+), 0 deletions(-)
$ git checkout master
Switched to branch 'master'
$ git merge --no-ff new_branch
Automatic merge went well
$ cat file
ABC
DEF
Я понимаю причину, по которой git
автоматически добавляет "DEF" в "файл". Но я хотел бы заставить git «думать»:
- master / file и new_branch / file отличаются
- Я создам конфликт со всей старой и всей новой версией, чтобы позволить пользователям разрешить ее вручную
Я читал другие посты о создании "драйвера слияния", но мне далеко не ясно, как сделать git с его помощью. (Сценарий очевиден, всего несколько строк).
P.S. Для заинтересованных людей: я не использую инструмент слияния. Я хотел бы объединить таблицы TSV с наборами данных и результирующими наборами. Во всех случаях, когда они различаются (даже если редактирование выполняется только в одной ветви), я бы хотел обработать их вручную с помощью собственной цепочки инструментов для обработки этих наборов данных.