Я точно знаю, что версия на development_branch точна на 100%, и я мог бы просто заменить файл в основной ветке на 1: 1, но я хочу сохранить историю коммитов ...
В репозитории Git существует только один вид истории, и эта история - это набор коммитов в репозитории.
Добавление новых коммитов в репозиторий не приводит к изменению существующих коммитов. в хранилище. Буквально не может изменить их.
Следовательно, все, что вам нужно сделать в этом случае, это извлечь желаемое содержимое из коммита, в котором они есть, записать их в свой индекс (где * 1025) * создает следующий коммит, чтобы сделать), и сделать новый коммит. Для этого:
# git checkout master # if needed - but you're already there
git checkout development_branch -- path/to/file
и теперь вы должны быть готовы git commit
к обновленному файлу (используйте git status
, git diff --cached
, et c., Чтобы убедиться).
(В Git 2.23 или более поздней версии вы можете использовать git restore
вместо git checkout
-for-a-single-file. Командная строка, которую вы вводите, длиннее, но операция понятнее: цель состоит в том, чтобы извлечь данный файл из данного коммита, записав его и в индекс, и в рабочее дерево.)