Git'ten çekilirken hata - depo veritabanına bir nesne eklemek için yetersiz izin .git / objects


113

Git hatası alıyorum: "Git çekme kaynağı geliştirmesini" her yaptığımda ".

    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
Açıkça sorulan soru: Diskteki dosyalara erişim haklarınız var mı?
Lasse V.Karlsen

17
.git/objectsDosyanın izinlerini kontrol edin . sudoGeçmişte bir noktada yanlışlıkla kullanmış ve sahipliğini rootkendinizden çok ona vermişsiniz gibi görünüyor.
Chris Hayes

@ChrisHayes de aynı sorunu alıyorum Ama hangi .git / objects dosyası? Bu dosya / dizin nerede?
pedroremedios

1
@pedroremedios .git, her git repo'nun tabanında bulunan bir dizindir.
Chris Hayes

Yanıtlar:


255

@ChrisHayes'in kazara bir sudo hakkında haklı olduğunu varsayarsak, bu onu düzeltmelidir. Deponuzun içinden:

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

Güncelleme : illegal group namehatayı alanlar için , bunun yerine şunu deneyin:

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

7
Ne anlama geliyor git rev-parse --show-toplevel? Depomun chown -R user:userüst düzey dizinini kullanarak sorunu çözebildim.
Matt K

9
@MattK bu, deponuzun en üst düzey dizinini alacaktır, bu nedenle komut, şu anda deponuzda nerede olursanız olun çalışacaktır. Zaten sudo chown -R $USER:$USER .git
kökteyseniz,

7
Anlıyorum: illegal group name
Ian

1
Yanlış kullanıcı adını kullanıyordum. Komut işe yaradı. Teşekkür ederim.
Ian

1
daha önce kazara bir sudo sonra da bana oldu. sahibi / grubu değiştirmek
sorunu çözdü

10

Projenin kök dizinine gidin ve bu sorunu çözmek için aşağıdaki komutları çalıştırın,

cd .git/objects
sudo chown -R yourname:yourgroup *

2

Benimki aptalca bir hataydı ... doğru kullanıcı adı ve grup belirlendi, ancak www-data ona erişen hesaptı. Dizinin sahibi vaindil: www-data idi, ancak izinler 755 idi, bu yüzden www-data ona yazamıyordu. Şununla düzeltildi:

$ sudo chmod -R 775 /path/to/repo


1

İYİ BİR UYGULAMA DEĞİL (Sadece bir alternatif)

Ubuntu kullanıyorum ve aynı sorunla karşılaştım. Bunu çözmek için kullanıcıyı kök olarak değiştirdim ve başka hata görmüyorum.

$su
password

Sonra,

$git pull origin master

Önerilen yol: REHBERİN İZNİNİ DEĞİŞTİRİN


4
Bu (olacağı gibi) çalışacaktır sudo, ancak mümkün olan her yerde komutları kök olarak çalıştırmaktan kaçınmak en iyi uygulamadır.
dwurf

@dwurf Yorumunuz için teşekkürler. Bu sadece yukarıdaki cevaba bir alternatifti. :)
Nabin

1
ÇÖZÜM DEĞİL - deponuzu sudo olarak kullanmak istemezsiniz.
Wax Cage

1
@WaxCage Evet, ama zaten büyük kalın metni görüyor musunuz? :)
Nabin
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.