AI испортил один файл, но в нём уже были ваши правки. Перед восстановлением посмотрите рабочий diff и индекс: возврат целого файла способен убрать обе части работы.

Сохраните копию выбранного файла или патч, затем сравните два состояния через Git:

git status --short
git diff -- src/example.py
git diff --cached -- src/example.py

Рабочий файл и индекс

git restore -- src/example.py восстанавливает рабочий файл из индекса. Это уничтожает незакоммиченные изменения в выбранном файле относительно индекса. Если вы уже добавили правку через git add, команда не вернёт файл к HEAD автоматически.

git restore --staged -- src/example.py меняет индекс, оставляя рабочий файл. Подробные источники восстановления и варианты команд описаны в документации git restore.

Для учебной задачи сначала воспроизведите эти действия в тестовом репозитории с одним файлом. Измените строку, добавьте её в индекс, измените ещё раз и сравните оба diff. Так становится видно, почему состояние индекса имеет значение.

Если нужно сохранить часть работы

Не применяйте восстановление ко всему каталогу. Сохраните патч или копию файла и выберите отдельные фрагменты интерактивно либо отредактируйте их вручную. После этого снова посмотрите diff.

Уже опубликованный коммит требует отдельного решения, обычно нового отменяющего изменения, а не переписывания общей истории без согласования.

Попросите AI перед откатом назвать точный файл, источник восстановления и изменения, которые будут потеряны. Проверяемое описание действия полезнее общего обещания «вернуть всё как было».

Перед откатом пригодится проверка состава AI-патча.