Проблема
Не удалось применить фильтр очистки (отдельная проблема, не связанная с Git), в результате чего Git хранит «грязные» файлы. Я исправил фильтр, но теперь мне нужно очистить файлы, а затем сохранить их снова.
Что происходит
Из другого моего вопроса я знаю, что если файлы были зафиксированы без фильтра, когда есть присутствует активный фильтр, независимо от того, что я делаю, эти файлы будут рассматриваться как измененные, поскольку хэши не будут совпадать. Никакое количество git reset --hard
или git stash
не исправит это, и ничего больше.
Неудачное решение
Моей первой мыслью было сделать интерактивную перебазировку. Однако даже с --force
не пускает. С параметром force он просто говорит, что это невозможно сделать, но без него Git жалуется на неустановленные изменения.
нельзя перебазировать: у вас есть неустановленные изменения
Безрезультатные поиски
Я попытался найти способ заставить Git игнорировать неустановленные изменения, но все это привело к обычным методам ОБРАБОТКИ неустановленных изменений (т.е. reset
и stash
).
Что я пытаюсь
В настоящее время я пытаюсь выполнить перебазирование вручную, но по какой-то причине это не работает должным образом. Еще слишком рано рассказывать подробности, и пришло время пообедать. Я собираюсь упомянуть об этом сейчас, так как это появилось в комментариях.
Единственное, что осталось, насколько я могу видеть.
Единственное решение, которое я могу придумать, это отложить текущий рабочий каталог, а затем git reset --hard last-good-commit
. Затем я бы переместил файлы обратно и зафиксировал, но потерял бы историю, а я этого не хочу.
Под «потерей истории» я подразумеваю, что коммиты, ведущие к «настоящему», будут потеряны. Я хочу избежать этого.
Вопрос
Как заставить rebase в этом сценарии?
reset --hard
потеряю историю. (2) как объяснено, тайник не работает. Это подробно объяснено в связанном вопросе. Что касается того, что я имею в виду под потерей истории, я имею в виду, что я теряю коммиты, ведущие к настоящему. - person Nero gris   schedule 10.08.2018