Ситуация
Я пытаюсь повторно применить мои фильтры git после выявления и устранения неожиданного и нежелательного поведения на предыдущей итерации сценария. Я должен был сделать это однажды, и ни разу не получил уведомление о конфликте слияния. Однако сейчас я не могу понять, как с этим справиться.
Что я делаю
Я бегу $git rebase -i --root --preserve-merges
. Мне известно о предупреждении, касающемся слияний и перебазирования, и оно не относится к этой ситуации, поскольку я не переупорядочиваю какие-либо коммиты.
Затем я переключаю pick
на edit
После редактирования процесс состоит в том, чтобы запустить фильтр пятен на каждом файле, а затем применить фильтр очистки. Это очень простой процесс.
Проблема.
git rebase --continue
выполняет слияние. Файлы следующего коммита будут значительно отличаться, поскольку фильтруемые файлы являются файлами LaTeX, а я разбиваю абзацы на несколько строк.
Это ожидается и необходимо для коммитов слияния, но он делает это для коммитов только с одним родителем.
Вопрос * * 1023
Что я могу сделать, чтобы предотвратить такое поведение?
Что я пробовал.
До сих пор я пытался играть с -X theirs
, -X ours
и -s ours
. Это не сработало. При чтении руководства говорится, что в случае бинарных файлов, когда указан -X ours
, он просто игнорирует изменения в другой «ветке» (в данном случае в предыдущем коммите), поэтому я установил *.* binary
в .git/info/attributes
. В случае, если я получил это назад, я также попробовал это с theirs
. Однако ни одна из этих попыток не привела к желаемому поведению.
Минимальный рабочий пример
Я тестировал это с простым репо с тремя коммитами, где первый коммит - "привет", второй - "привет \ nwrld", а третий - "привет \ nwrld \ n". где \n
- фактически новая строка в файле.
Затем я выбираю первый (корневой) и третий (последний) коммиты и редактирую средний. Внесено изменение «привет» в «привет \ nworld» (исправление опечатки в мире). Затем я фиксирую и продолжаю.
Пока они дали следующие результаты:
- Предупреждение о пустом коммите
- удаление последнего коммита без предупреждения
- последний коммит наследует "fix"
Все это нежелательно.