Git LinuxWindowsmacOS

Git: Как вернуть файл к состоянию определённого коммита

  • Обновлено
  • Чтение ≈ 2 минуты

Краткий ответ

Вернуть одну версию файла из старого коммита можно без отката всей ветки. Основной риск — перезаписать незакоммиченные изменения этого конкретного файла.

В этой статье
  1. Как выглядит неисправность
  2. Причины и признаки
  3. Пошаговое устранение
  4. Как проверить результат
  5. Если проблема осталась

#Как выглядит неисправность

Вернуть одну версию файла из старого коммита можно без отката всей ветки. Основной риск — перезаписать незакоммиченные изменения этого конкретного файла.

#Причины и признаки

Возможная причинаКак узнатьЧто делать
Выбран неверный коммитВ истории похожие изменения в соседних фиксацияхgit log -- path/to/file показывает несколько кандидатовСначала посмотреть файл через git show
В рабочем файле есть новые правкиВнесены ещё не сохранённые измененияgit status --short отмечает файл буквой MСохранить отдельную копию перед restore

#Пошаговое устранение

  1. 1. Откройте нужный проект и найдите файлВ терминале из корня репозитория выполните git status --short и убедитесь, что путь совпадает с нужным. Если файл уже изменён — скопируйте его через проводник в другое место.
  2. Проверка незакоммиченных правок, не меняет файлы
    Linux · Терминал (Bash)Команда
    Проверка незакоммиченных правок, не меняет файлы.
    git status --short
  1. 2. Найдите правильный коммитВыполните git log --oneline -- path/to/file, найдите коммит по дате и описанию. Если переименования важны, отдельно посмотрите историю с --follow для одного файла. Не используйте хэш из чужого примера.
  2. Читает историю указанного файла
    Linux · Терминал (Bash)Команда
    Читает историю указанного файла.
    git log --oneline -- path/to/file
  1. 3. Посмотрите старое содержимое без перезаписиВведите git show ХЭШ:path/to/file для текстового файла; укажите настоящий короткий или полный хэш и путь из корня репозитория. Для бинарного файла лучше смотреть описание через git log и сравнить копии, не выводя двоичные данные в терминал.
  2. Замените ХЭШ и путь: только просмотр
    Linux · Терминал (Bash)Команда
    Замените ХЭШ и путь: только просмотр.
    git show ХЭШ:path/to/file
  1. 4. Восстановите файл только после проверкиВыполните git restore --source=ХЭШ --worktree -- path/to/file. В рабочей копии появится содержимое выбранного коммита. Если файл отсутствует в том коммите — проверьте историю и правильность написания.
  2. Перезаписывает указанный файл в рабочей копии, не меняя индекс; сначала сделайте копию
    Linux · Терминал (Bash)С осторожностью
    Перезаписывает указанный файл в рабочей копии, не меняя индекс; сначала сделайте копию.
    git restore --source=ХЭШ --worktree -- path/to/file

    Команда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.

  1. 5. Сравните результат и протестируйтеВыполните git diff -- path/to/file, откройте восстановленный файл и запустите связанные тесты. Если версия не подошла, верните ранее сделанную внешнюю копию; не сбрасывайте всю ветку через reset --hard.
  2. Сравнение восстановленного файла с индексом и общий статус
    Linux · Терминал (Bash)Команда
    Сравнение восстановленного файла с индексом и общий статус.
    git diff -- path/to/file
    git status --short
  1. 6. Сохраните проверенное изменениеЕсли изменение правильное и должно войти в историю, отдельно подготовьте только этот файл через git add -- path/to/file и выполните привычный commit; сообщение объясняет, какой файл и почему восстановлен. Если нужно только временно посмотреть — не создавайте коммит.

#Как проверить результат

Файл соответствует ожидаемому коммиту; остальные файлы и история ветки не затронуты. Если содержимое не совпадает, повторно проверьте путь относительно корня и хэш.

#Если проблема осталась

Не повторяйте опасные действия на рабочем окружении. Сравните первоначальный симптом с новым состоянием, сохраните обезличенные сообщения и версии компонентов, проверьте резервную копию; перед изменением общей истории Git или данных/сети Docker обратитесь к ответственному администратору проекта.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.