git index.lock Файл существует, когда я пытаюсь зафиксировать, но не могу удалить файл - PullRequest
166 голосов
/ 14 февраля 2012

Когда я делаю 'git commit', я получаю следующее:

fatal: Unable to create 'project_path/.git/index.lock': File exists.

Однако, когда я делаю ls project_path/.git/index.lock, он говорит, что файл не существует. Есть мысли о том, что мне делать? Я также заметил, что project_path / .git принадлежит root, но не уверен, что это как-то связано с проблемой, с которой я сталкиваюсь.

git версия 1.7.5.4

edit: Кажется, что проблема, скорее всего, была в другом процессе, который я выполнял, который писал (без моего ведома) в каталог проекта. Я перезапустил свою машину, и у меня не возникло проблем с фиксацией.

Ответы [ 31 ]

4 голосов
/ 05 февраля 2014

Иногда Git создает файл блокировки, связанный с вашим репо, когда вы вносите какие-либо изменения или, скорее всего, когда вы используете субмодули.Сообщение об ошибке покажет вам путь к файлу блокировки.Исправление: просто вручную перейдите к пути в терминале и удалите файл блокировки по $ rm index.lock

Это должно помочь.

3 голосов
/ 27 сентября 2018

Я сталкивался с тем же сценарием. Я даже не сделал никаких изменений в моем локальном коде. Я только что отредактировал файл и восстановил его. Я просто удалил файл ниже в скрытой папке .git. Это сработало!

project_path / .git / index.lock

3 голосов
/ 15 февраля 2012

Если вы на самом деле не хотели, чтобы root владел вашим репозиторием, это звучит так, как будто вы случайно запустили команду Git от имени root (возможно, даже первоначальный клон / init).Если вы намеревались это сделать, то вам придется смириться с запуском всех команд Git в репозитории от имени root.Если вы этого не сделали, запустите sudo chown your-user[:your-group] -R .git, чтобы завладеть им, а затем посмотрите, все ли работает.

2 голосов
/ 16 апреля 2017

У меня тоже есть этот вопрос в windows 10.

когда я пытаюсь del ./.git/index.lock, он сказал мне cannot remove 'index.lock': Device or resource busy

Я наконец получил причину:

на компьютере есть два процесса для использования git:

  • git bash
  • cmder

, поэтому я использую cmder.exe для git commit, будут возникать ошибки.

, поэтому решение - использовать git bash или завершить работу git bash, а затем использовать cmder.exe

2 голосов
/ 03 августа 2016

У меня была эта проблема с SourceTree при переключении ветки двойным щелчком по ней.Проблема не очень распространена, и Atlassian знает об этом , но они решили ее не исправлять.

К счастью, решение есть.Вместо того, чтобы дважды щелкнуть по ветви, которую вы хотите переключить, просто щелкните правой кнопкой мыши и выберите «Оформить заказ [название ветви]».Это должно преуспеть сейчас.

1 голос
/ 08 июля 2016

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

роковой: невозможно создать бла-бла-бла ..

Я просто разрешаю это, перейдя в папку .git (в Project Explorer Dir). И удалите Индекс ----- [тип файла: файл LOCK]. Теперь я получаю все права доступа в sourceTree ..

Пожалуйста, убедитесь, что файл индекса заблокирован. Предположим, вы не получаете тип файла, измените настройки просмотра файлов на компьютере. Примечание. Папка .git - это обычно скрытый тип папки.

1 голос
/ 08 июня 2016

Начиная с git 2.8.4 (июнь 2016 г.) , этого больше не должно происходить.

См. выпуск 755 , что также должно устранить проблему (commit 2db0641 ):

Убедитесь, что дескрипторы временных файлов не наследуются дочерними процессами

Запретить дочерним процессам наследовать дескриптор index.lock.

1 голос
/ 26 октября 2015

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

1 голос
/ 01 сентября 2015

Решением для меня было удалить файл .index и позволить Git пересобрать другой.

1 голос
/ 05 ноября 2015

Я создал пустой файл index.lock, удалил его командой windows

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...