Git: не удалось открыть файл индекса: разрешение отклонено на "git status". Хостинг на Bitbucket - программирование
Подтвердить что ты не робот

Git: не удалось открыть файл индекса: разрешение отклонено на "git status". Хостинг на Bitbucket

У меня была эта проблема в течение последних двух дней при попытке сделать либо статус git, либо git pull. Репозиторий размещен на Bitbucket.

Пробовал несколько вещей, чтобы сделать эту работу (есть несколько сообщений, связанных с этим в stackoverflow, но они не работают).

Вот проблема:

[email protected]:/repo/$ git status
fatal: index file open failed: Permission denied
fatal: git status --porcelain failed

Если я делаю "git pull":

[email protected]:/repo/$ git pull
remote: Counting objects: 77, done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 56 (delta 37), reused 41 (delta 22)
error: insufficient permission for adding an object to repository database .git/objects

fatal: failed to write object
fatal: unpack-objects failed

Я дважды проверял локальные разрешения, и все кажется прекрасным. У меня есть разрешение на все файлы.

Примечание:

Если я использую "sudo", все работает нормально, однако у меня нет учетных данных SSH для root на этой машине развертывания. Это заставляет меня думать, что это проблема с разрешениями (как объясняет ошибка): каким бы оно ни было, если я являюсь владельцем всех файлов, включая файлы внутри .git/

Спасибо заранее!

4b9b3361

Ответ 1

Получена та же ошибка fatal: index file open failed: Permission denied, запустив git status, и я проверил .git/index на

$ ls -al .git/index

к моему удивлению, это

----------  1 Kjuly  staff  768248 Sep  2 11:07 .git/index

Я понятия не имею, почему и как это изменилось. Во всяком случае, после того, как я изменил его разрешение на 644 на

$ chmod 644 .git/index

git status работает.

Ответ 2

Убедитесь, что каталог .git и его файлы/подкаталоги принадлежат и доступны для записи вашим пользователем. Это похоже на то, что репозиторий был клонирован под другой учетной записью пользователя или пользователем root (например, через sudo).

Не имеет значения, где размещен удаленный репозиторий, статус git только для доступа к локальному репозиторию.

Ответ 3

Сегодня у меня возникла такая же проблема с BitBucket. Вот обходной путь, который работал у меня:

git remote set-url origin https://[email protected]/_my_/_repo_.git
git pull
git push
git remote set-url origin [email protected]:_my_/_repo_.git