Kesalahan saat menarik dari git - izin tidak cukup untuk menambahkan objek ke database repositori .git / objek

112

Saya mengalami galat git: "izin tidak cukup untuk menambahkan objek ke database repositori .git / objek" setiap kali saya membuat "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
unati patil
sumber
1
Pertanyaan yang jelas: Apakah Anda memiliki hak akses ke file di disk?
Lasse V. Karlsen
17
Periksa izin .git/objectsfile. Kedengarannya seperti Anda mungkin telah salah menggunakan sudodi beberapa titik di masa lalu dan memberikan kepemilikan rootalih-alih kepada diri Anda sendiri.
Chris Hayes
Saya mendapatkan masalah yang sama @ChrisHayes Tapi file .git / objek yang mana? Di mana file / direktori itu?
Pedroremedios
1
@pedroremedios .gitadalah direktori yang ada di dasar setiap repo git.
Chris Hayes

Jawaban:

255

Dengan asumsi @ChrisHayes benar tentang sudo yang tidak disengaja, ini harus memperbaikinya. Dari dalam repositori Anda:

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

Pembaruan : bagi Anda yang mendapatkan illegal group namekesalahan, coba ini sebagai gantinya:

sudo chown -R $(id -u):$(id -g) "$(git rev-parse --show-toplevel)/.git"
dwurf.dll
sumber
7
Apa yang git rev-parse --show-topleveldilakukannya? Saya dapat memperbaiki masalah hanya dengan menggunakan chown -R user:userdirektori level teratas dari repo saya.
Matt K
9
@MattK ini akan mendapatkan direktori tingkat atas dari repo Anda, jadi perintah akan bekerja dimanapun di repo Anda saat ini. Jika Anda sudah di root, Anda bisa menjalankansudo chown -R $USER:$USER .git
dwurf
7
Saya mendapatkan: illegal group name
Ian
1
Saya menggunakan nama pengguna yang salah. Perintah itu berhasil. Terima kasih.
Ian
1
hal itu juga terjadi pada saya setelah sudo tidak disengaja sebelumnya. mengubah pemilik / grup memperbaikinya
Asped
10

Buka direktori root proyek dan jalankan perintah di bawah ini untuk memperbaiki masalah ini,

cd .git/objects
sudo chown -R yourname:yourgroup *
Priyank Patel
sumber
2

Kesalahan saya adalah kesalahan bodoh ... nama pengguna dan grup yang tepat telah ditetapkan, tetapi www-data adalah akun yang mengaksesnya. Direktori tersebut dimiliki oleh vaindil: www-data, tetapi perizinannya 755 sehingga www-data tidak dapat menulis padanya. Perbaiki dengan:

$ sudo chmod -R 775 /path/to/repo
sia-sia
sumber
1

BUKAN PRAKTIK YANG BAIK (Hanya alternatif)

Saya menggunakan Ubuntu dan menghadapi masalah yang sama. Untuk mengatasinya, saya cukup mengalihkan pengguna ke root dan saya tidak melihat kesalahan lebih lanjut.

$su
password

Kemudian,

$git pull origin master

Cara yang disarankan: GANTI IZIN DIREKTORI

Nabin
sumber
4
Ini akan bekerja (sesuai keinginan sudo), tetapi praktik terbaik adalah menghindari menjalankan perintah sebagai root sedapat mungkin.
dwurf
@dwurf Terima kasih atas komentarnya. Itu hanya alternatif jawaban di atas. :)
Nabin
1
BUKAN SOLUSI juga - Anda tidak ingin menggunakan repo sebagai sudo.
Wax Cage
1
@ WaxCage Ya, tetapi apakah Anda sudah melihat teks tebal besar di sana? :)
Nabin