Как пропустить слияние во время `git rebase --continue` - PullRequest
0 голосов
/ 07 сентября 2018

Ситуация

Я пытаюсь повторно применить мои фильтры 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"

Все это нежелательно.

...