Ошибка git «невозможно записать имя файла sha1… Отказано в доступе» - PullRequest
17 голосов
/ 01 июля 2011

Я использую Git на Windows. Это то, что я сделал: занимаясь разработкой на машине M1, создал голое хранилище на USB-накопителе M2 для резервного копирования хранилища на M1. Я делал резервные копии с помощью этой команды (из git bash на M1):

git push --mirror "f:\repo"

Работал без проблем. Тогда я купил новую машину М3. Я клонировал хранилище из M2 в M3:

git clone "f:\repo" .

Сделал несколько проверок на репо в М3. Затем я сделал (из git bash на машине M3)

git push --mirror "f:\repo"  

Я получаю эту ошибку: невозможно записать имя файла sha1 ... В доступе отказано Как я могу это исправить?

Ответы [ 6 ]

6 голосов
/ 02 июля 2011

Даже если речь идет о другом контексте (git + ssh), проверьте ACL, связанный с вашим репо.
См., Например, это сообщение в блоге .

Как предлагается вна вопрос " Ошибка Git pull: невозможно создать временное имя файла sha1 " (в котором есть и другие интересные предложения), попробуйте повторить ваш голый репозиторий, на этот раз с настройкой:

git config core.sharedRepository true
1 голос
/ 05 октября 2018

Эта ошибка возникла из-за прав доступа к удаленному репозиторию.В моем случае это был пользователь ssh, который был не прав.

0 голосов
/ 09 апреля 2018

У меня была эта проблема в течение 2 дней, и я наконец нашел способ ее решить. Ошибка возникает из-за того, что ветка (в удаленном репозитории), которую вы действительно хотите вставить, в настоящее время извлечена. При применении опции --mirror или --all, по крайней мере, ветвь извлекается, поэтому в разрешении отказано.

Так что просто переключитесь на другую ветку на пульте и примените push локально, и на этот раз это будет работать.

0 голосов
/ 07 ноября 2017

Мы столкнулись с этой проблемой, когда у коллеги не было правильной настройки umask в его .bashrc, из-за которой все его файлы были установлены как доступные только для чтения, чтобы остальные из нас пытались записать изменения в этот же файл.в git repo.Вот ссылка , объясняющая права доступа umask

0 голосов
/ 21 сентября 2016

У меня была такая же проблема, и я смог ее исправить, перейдя в C:\Program Files\Git, затем щелкнув правой кнопкой мыши на git-bash.exe -> свойства -> Совместимость -> Запустить эту программу от имени администратора.

0 голосов
/ 26 ноября 2012

Я тоже получаю ту же ошибку, но обычно при выполнении "git pull" с использованием bash на Windows-машине.

Для меня это связано с тем, что какое-то другое приложение (обычно в моем случае это средство проверки на вирусы) вызывает конфликты, удерживая каталог .git.

Обычно я могу сделать несколько «git pull» несколькимибольше раз, и это в конечном итоге сработает (после сбоя с той же ошибкой отказа в разрешении для другого хэш-значения) или, если я спешу, я бы остановил проверку на вирусы, выполнил команду git pull (которая успешно сработала бы в первый раз безошибка разрешения), а затем очень быстро снова включите проверку вирусов.

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