Сколько коммитов нужно вернуться и выбрать из? Если это всего лишь один, возможно, возьмите ветку перед ней, извлеките файл, который вы зафиксировали, и затем используйте git add -p
, чтобы добавить его так, как вы этого хотели. Затем вы можете вернуться туда, где вы были, и извлечь файл из вашей временной ветки.
то есть:
git checkout -b temp troublesome-commit^
git checkout troublesome-commit -- path/to/file
git add -p path/to/file
git commit -c troublesome-commit
git checkout @{-1}
git checkout temp -- path/to/file
git commit path/to/file
git branch -D temp
Другие альтернативы включают возвращение и редактирование коммита с помощью git rebase -i
(пометка коммита как edit
, затем выполнение git reset HEAD^
и повторный коммит при возврате в оболочку).
Если изменения, из которых вы хотите выбрать, распространяются на серию коммитов, может быть лучше извлечь их как патчи (или патч, охватывающий все из них) и отредактировать патч вручную, убрав нужные изменения сохранить и подать остаток в git apply --reverse
.