Редактирование git commit без конфликтов из давних пор приводит к конфликтам
У нас есть некоторые данные, которые были случайно сохранены в одном из наших файлов конфигурации и застряли там без уведомления около месяца. Это частное репо с очень ограниченным доступом пользователей, поэтому мы хотели бы переписать историю и извлечь эти данные, прежде чем делиться репо с другими.
Файл конфигурации не изменился с момента нежелательной фиксации, поэтому я попытался
git rebase -i $parent_commit^
и выбрал для редактирования соответствующий коммит. После продолжения он проходит около 30+ коммитов, а затем вступает в конфликт слияния с совершенно не связанным файлом. Я бы подумал, что перебазирование должно работать нормально в этом случае, так как файл конфигурации не был изменен.
1 ответ
Оказывается, ребаз не пытается объединить по умолчанию, поэтому после выполнения
rebase --preserve-merges -i $parent_commit^
Я столкнулся только с несколькими ошибками, когда по каким-то причинам он не смог объединить некоторые файлы. В этом случае вывод дал мне идентификатор фиксации слияния, так что
git checkout <merge_commit_id> -- file/that/is/conflicting
приведет меня в состояние, которое я хотел.