Git LinuxWindowsmacOS

Git: Unable to create .git/index.lock: File exists

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

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

Предыдущий процесс git завершился аварийно и оставил lock-файл. Убедитесь, что git не запущен, и удалите index.lock.

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

#Что означает ошибка

Сообщение
index.lock

Ошибка fatal: Unable to create '.git/index.lock': File exists означает, что Git считает, что другая операция уже идёт, и не хочет менять индекс одновременно. Файл блокировки остаётся после аварийно завершённой команды, закрытия IDE во время операции или работы двух программ.

Прежде чем удалять файл, убедитесь, что Git действительно не запущен.

Удаление работающей блокировки может повредить индекс.

Предыдущий процесс git завершился аварийно и оставил lock-файл. Убедитесь, что git не запущен, и удалите index.lock.

#Причины и решения

Возможная причинаКак узнатьЧто делать
Аварийный выходПрежняя операция Git аварийно завершилась, а работающих процессов больше нетТолько после проверки процессов удалите конкретный осиротевший index.lock.
Работает другой gitВ редакторе или терминале ещё выполняется индексирующая операция GitДождитесь завершения; не удаляйте блокировку работающего процесса.
Нет правСообщение об отказе записи в .git при сохранении блокировкиПроверьте владельца и разрешения папки; не меняйте права рекурсивно вслепую.
СинхронизацияПроект находится в синхронизируемой папке и блокировка повторяетсяПредпочтите отдельную локальную копию и синхронизацию изменений через Git.

#Пошаговое решение

  1. Закройте программы, использующие GitВ каталоге проекта закройте редактор, который мог выполнять Git (например, VS Code, GitHub Desktop), и дождитесь завершения текущих команд commit, rebase, merge, checkout, fetch. Если в терминале выполняется Git, не удаляйте блокировку: дождитесь завершения или выясните причину зависания. Откройте новый терминал именно в корне этого репозитория и выполните git rev-parse --show-toplevel, чтобы убедиться, что находитесь в нужном проекте.
  2. Проверьте отсутствие процессов gitВ Windows нажмите Ctrl+Shift+Esc → «Диспетчер задач» → «Подробности» и найдите git.exe; также проверьте, не работает ли операция в среде разработки. В Linux/macOS выполните в терминале ps -ef | grep "[g]it" и сверьте процесс с вашим проектом. Наличие Git требует ожидания; процесс может также находиться под именем редактора/оболочки. Не используйте kill -9 без определения процесса и понимания последствий незавершённой записи.
  3. Удалите .git/index.lockТолько если уверены, что никаких операций Git больше нет и сообщение указывает **ровно на .git/index.lock**, проверьте наличие файла: Linux/macOS — ls -l .git/index.lock, Windows PowerShell — Test-Path .git\index.lock. Если файл есть, сделайте резервную копию его имени/времени и удалите этот один файл: rm .git/index.lock либо Remove-Item .git\index.lock в PowerShell. Выполняйте из корня репозитория, не используйте rm -rf .git или рекурсивное удаление блокировок. В рабочих деревьях git worktree каталог .git может быть файлом: остановитесь и уточните реальный путь через git rev-parse --git-path index.lock.
  4. Запустите git statusЗатем выполните git status и git diff --stat. Если Git показывает текущую ветку и список изменений вместо ошибки index.lock, блокировка снята. Если вывод содержит You have unmerged paths, rebase in progress или повреждённый индекс, **не удаляйте .git/index и не запускайте reset --hard**: сначала разберитесь, не нужно ли завершить/отменить прерванную операцию. git fsck можно использовать для дополнительной проверки объектов, но он не исправляет автоматически конфликт индекса.
  5. Исключите .git из синхронизации и антивирусаЕсли блокировка повторяется, проверьте, не открыты ли два клиента Git для одной папки и не синхронизируется ли рабочий каталог службой OneDrive/Dropbox. Для репозитория, синхронизируемого облаком, предпочтительно перенести его в обычную локальную папку с сохранением резервной копии и затем настроить синхронизацию через Git-remote. Не отключайте антивирусное сканирование целиком: при подозрении на влияние защиты сообщите администратору и уточните безопасное исключение для конкретного проекта.

#Если не помогло

Удаляйте index.lock только если уверены, что никакой процесс git не работает.

#Проверка процессов

Закройте IDE, клиенты Git (GitHub Desktop, GitKraken, TortoiseGit) и терминалы с запущенным git. Проверьте процессы: Windows — диспетчер задач, процессы git.exe; Linux/macOS — ps aux | grep git. Дождитесь окончания долгих операций (gc, fetch). Если процессов нет — блокировка осиротевшая.

#Удаление блокировки

Удалите файл: Linux/macOS — rm -f .git/index.lock; Windows PowerShell — Remove-Item .git\index.lock -Force; cmd — del .git\index.lock. Затем выполните git status. Для блокировок других файлов (.git/refs/heads/main.lock, .git/HEAD.lock, shallow.lock) принцип тот же: найдите файл из текста ошибки и удалите после проверки процессов.

#Если повторяется

Причина может быть в антивирусе или облачной синхронизации (OneDrive, Dropbox), которая блокирует папку .git: исключите репозиторий из облачной синхронизации; настройки антивируса согласуйте с администратором. Проверьте целостность: git fsck. Если индекс повреждён (index file corrupt), сначала сделайте резервную копию всего репозитория и обратитесь к документации по восстановлению индекса: удаление .git/index и git reset без проверки может потерять состояние индекса, особенно частично подготовленные изменения. Проверьте, что вы не запускаете git в нескольких терминалах параллельно скриптом.

Linux · Терминал (Bash)С осторожностью
Команды удаления приведены как альтернативы для разных ОС; нельзя удалять lock-файл при работающем Git или вслепую в worktree.
# Только в корне обычного Git-репозитория и ПОСЛЕ проверки отсутствия Git-процессов
git rev-parse --git-path index.lock
git status
# В отдельном действии при точно подтверждённом осиротевшем файле:
# Linux/macOS: rm .git/index.lock
# Windows PowerShell: Remove-Item .git\index.lock

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

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

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

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