Предполагая, что можно изменить историю коммитов, вот рабочий процесс для отмены изменений в одном файле в более раннем коммите:
Например, вы хотите отменить изменения в 1 файле (badfile.txt
) в коммите aaa222
:
aaa333 Good commit
aaa222 Problem commit containing badfile.txt
aaa111 Base commit
Перебазировать базовый коммит, изменить проблемный коммит и продолжить.
1) Начать интерактивную перебазировку:
git rebase -i aaa111
2) Пометьте фиксацию проблемы для редактирования в редакторе, изменив pick
на e
(для редактирования):
e aaa222
pick aaa333
3) Вернуть изменения в неверный файл:
git show -- badfile.txt | git apply -R
4) Добавить изменения и внести изменения:
git add badfile.txt
git commit --amend
5) Завершить ребаз:
git rebase --continue