git rebase --preserve-merges с конфликтами слияния - PullRequest
2 голосов
/ 17 апреля 2020

В настоящее время я удаляю пароли и другие конфиденциальные данные из git хранилища. Я бы хотел как можно больше сохранить историю, включая слияния. Итак, я делаю git rebase --perserve-merges -i <commit>. Затем я редактирую инструкции для редактирования указанных c коммитов, которые меня интересуют. Во время перебазирования я с удивлением вижу конфликты слияния, не связанные с редактированием моего пароля. Я считаю, что это конфликты, которые произошли с некоторыми из существующих слияний в истории и были разрешены во время слияния. Почему git не может просто воспроизвести коммит, который разрешил эти конфликты?

1 Ответ

1 голос
/ 17 апреля 2020

--preserve-merges несовместимо с --interactive.

(Все цитаты в этом ответе от git help rebase.)

При этом используется внутренний механизм --interactive, но его явное объединение с опцией --interactive, как правило, не очень хорошая идея, если вы не знаете, что делаете (см. Ниже ошибки).

и

Кроме того, следующие пары опций несовместимы:

  • --preserve-merges и --interactive

use --rebase-merges вместо этого

--rebase-merges был введен в Git 2.18 , а --preserve-merges был официально устарел в Git 2.22 .

Режим --rebase-merges по духу аналогичен устаревшему --preserve-merges, но работает с интерактивными перебазами, где коммиты могут быть переупорядочены, вставлены и отброшены по желанию.

Он все еще может не решить вашу проблему :

Все разрешенные конфликты слияний или ручные изменения в этих коммитах слияний должны быть разрешены / повторно применены вручную.

Даже если это не решит вашу проблему, я думаю, что она окончательно ответит на ваш вопрос. Кроме того, вы все равно должны использовать эту опцию, так как --preserve-merges устарела.

Есть еще git help rebase комментариев к --rebase-merges. Я рекомендую прочитать их.

...