Помилка під час витягування з git - недостатній дозвіл на додавання об’єкта до бази даних репозиторію .git / object


112

У мене є помилка git: "недостатній дозвіл на додавання об'єкта до бази даних репозиторію .git / object" щоразу, коли я роблю "походження походження git pull".

    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а не собі.
Кріс Хейс

У мене виникають ті ж проблеми @ChrisHayes Але який файл .git / object? Де цей файл / каталог?
pedroremedios

1
@pedroremedios .git- це каталог, який існує в основі кожного git repo.
Кріс Хейс

Відповіді:


255

Якщо припустити, що @ChrisHayes має рацію щодо випадкового судо, це повинно це виправити. Зсередини вашого сховища:

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"

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
це теж сталося зі мною після випадкового суда раніше. зміна власника / групи виправлена
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


1

НЕ ДОБРА ПРАКТИКА (просто альтернатива)

Я використовую Ubuntu і зіткнувся з тією ж проблемою. Щоб вирішити це, я просто переключив користувача на root і не бачу більше помилок.

$su
password

Тоді,

$git pull origin master

Рекомендований спосіб: ЗМІНИТИ ДОЗВИТОК ДИРЕКТОРІЇ


4
Це буде працювати (як буде sudo), але найкраще практик уникати виконання команд як root, де це можливо.
dwurf

@dwurf Дякую за коментар. Це була лише альтернатива відповіді вище. :)
Набін

1
НЕ РІШЕННЯ також - ви не хочете використовувати репо як судо.
Воскова клітка

1
@WaxCage Так, але ви бачите великий жирний текст вже там? :)
Набін
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.