Редактирование git commit без конфликтов из давних пор приводит к конфликтам

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

Файл конфигурации не изменился с момента нежелательной фиксации, поэтому я попытался

git rebase -i $parent_commit^

и выбрал для редактирования соответствующий коммит. После продолжения он проходит около 30+ коммитов, а затем вступает в конфликт слияния с совершенно не связанным файлом. Я бы подумал, что перебазирование должно работать нормально в этом случае, так как файл конфигурации не был изменен.

1 ответ

Решение

Оказывается, ребаз не пытается объединить по умолчанию, поэтому после выполнения

rebase --preserve-merges -i $parent_commit^

Я столкнулся только с несколькими ошибками, когда по каким-то причинам он не смог объединить некоторые файлы. В этом случае вывод дал мне идентификатор фиксации слияния, так что

git checkout <merge_commit_id> -- file/that/is/conflicting

приведет меня в состояние, которое я хотел.

Другие вопросы по тегам