Ошибка при извлечении из git - недостаточно прав для добавления объекта в базу данных репозитория .git / objects

113

У меня есть ошибка git: «недостаточно прав для добавления объекта в базу данных репозитория .git / objects» каждый раз, когда я делаю «git pull origin develop».

    remote: Counting objects: 70, done.
    remote: Compressing objects: 100% (7/7), done.
    remote: Total 42 (delta 35), reused 42 (delta 35)
    error: insufficient permission for adding an object to repository database     .git/objects

    fatal: failed to write object
    fatal: unpack-objects failed
уннати патил
источник
1
Очевидный вопрос: Есть ли у вас есть права доступа к файлам на диске?
Лассе В. Карлсен
17
Проверьте права доступа к .git/objectsфайлу. Похоже, вы, возможно, ошибочно использовали sudoв какой-то момент в прошлом и передали право собственности, rootа не себе.
Chris Hayes
У меня такая же проблема @ChrisHayes Но какой файл .git / objects? Где этот файл / каталог?
pedroremedios
1
@pedroremedios .git- это каталог, который существует в основе каждого репозитория git.
Крис Хейс

Ответы:

256

Если предположить, что @ChrisHayes прав насчет случайного sudo, это должно исправить. Изнутри вашего репозитория:

sudo chown -R $USER:$USER "$(git rev-parse --show-toplevel)/.git"

Обновление : для тех, кто получает сообщение об illegal group nameошибке, попробуйте следующее:

sudo chown -R $(id -u):$(id -g) "$(git rev-parse --show-toplevel)/.git"
dwurf
источник
7
Что git rev-parse --show-toplevelделать? Мне удалось решить проблему, просто используя chown -R user:userкаталог верхнего уровня моего репо.
Мэтт К.
9
@MattK это получит каталог верхнего уровня вашего репо, поэтому команда будет работать независимо от того, где в вашем репо вы сейчас находитесь. Если вы уже в корне, можете просто запуститьsudo chown -R $USER:$USER .git
dwurf
7
Я получаю: illegal group name
Ян
1
Я использовал неправильное имя пользователя. Команда сработала. Спасибо.
Ян
1
это также случилось со мной после случайного sudo раньше. смена владельца / группы исправила
Asped
10

Перейдите в корневой каталог проекта и выполните следующие команды, чтобы исправить эту проблему,

cd .git/objects
sudo chown -R yourname:yourgroup *
Приянк Патель
источник
2

Моя была глупой ошибкой ... правильное имя пользователя и группа были установлены, но www-data была учетной записью, имеющей к ним доступ. Каталог принадлежал vaindil: www-data, но права доступа были 755, поэтому www-data не мог писать в него. Исправлено:

$ sudo chmod -R 775 /path/to/repo
vaindil
источник
1

НЕПРАВИЛЬНАЯ ПРАКТИКА (просто альтернатива)

Я использую Ubuntu и столкнулся с той же проблемой. Чтобы решить эту проблему, я просто переключил пользователя на root и больше не вижу ошибки.

$su
password

Затем,

$git pull origin master

Рекомендуемый способ: ИЗМЕНИТЬ РАЗРЕШЕНИЕ НА КАТАЛОГ

Набин
источник
4
Это будет работать (как и будет sudo), но по возможности лучше избегать запуска команд от имени пользователя root.
dwurf 07
@dwurf Спасибо за комментарий. Это была просто альтернатива приведенному выше ответу. :)
Набин
1
НЕ РЕШЕНИЕ - вы не хотите использовать свое репо как sudo.
Wax Cage
1
@WaxCage Да, но вы уже видите большой жирный текст? :)
Nabin