เกิดข้อผิดพลาดขณะดึงจาก git - สิทธิ์ไม่เพียงพอสำหรับการเพิ่มอ็อบเจ็กต์ไปยังฐานข้อมูลที่เก็บ. git / objects


113

ฉันมีข้อผิดพลาดเกี่ยวกับคอมไพล์: "สิทธิ์ไม่เพียงพอสำหรับการเพิ่มอ็อบเจ็กต์ในฐานข้อมูลที่เก็บ. 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
คำถามที่ชัดเจน: คุณมีสิทธิ์เข้าถึงไฟล์ในดิสก์หรือไม่?
Lasse V.Karlsen

17
ตรวจสอบสิทธิ์ของ.git/objectsไฟล์ ดูเหมือนว่าคุณอาจใช้ผิดพลาดsudoในบางช่วงเวลาที่ผ่านมาและให้ความเป็นเจ้าของrootแทนตัวเอง
Chris Hayes

ฉันได้รับปัญหาเดียวกัน @ChrisHayes แต่ไฟล์. git / objects ใด ไฟล์ / ไดเร็กทอรีนั้นอยู่ที่ไหน
pedroremedios

1
@pedroremedios .gitคือไดเร็กทอรีที่มีอยู่ที่ฐานของ git repo ทุกตัว
Chris Hayes

คำตอบ:


255

สมมติว่า @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"

7
อะไรgit rev-parse --show-toplevelทำอย่างไร ฉันสามารถแก้ไขปัญหาได้เพียงแค่ใช้chown -R user:userในไดเรกทอรีระดับบนสุดของ repo ของฉัน
Matt K

9
@MattK สิ่งนี้จะได้รับไดเรกทอรีระดับบนสุดของ repo ของคุณดังนั้นคำสั่งจะทำงานไม่ว่าคุณจะอยู่ที่ไหนใน repo ของคุณในปัจจุบัน หากคุณอยู่ในรูทแล้วคุณสามารถเรียกใช้sudo chown -R $USER:$USER .git
dwurf

7
ฉันได้รับ: illegal group name
Ian

1
ฉันใช้ชื่อผู้ใช้ผิด คำสั่งใช้งานได้ ขอบคุณ.
Ian

1
มันยังเกิดขึ้นกับฉันหลังจาก sudo โดยไม่ได้ตั้งใจมาก่อน การเปลี่ยนเจ้าของ / กลุ่มแก้ไขแล้ว
เมื่อ

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 และประสบปัญหาเดียวกัน ในการแก้ปัญหาฉันเพียงแค่เปลี่ยนผู้ใช้เป็นรูทและฉันไม่เห็นข้อผิดพลาดเพิ่มเติม

$su
password

จากนั้น

$git pull origin master

วิธีที่แนะนำ: เปลี่ยนการอนุญาตของ DIRECTORY


4
วิธีนี้จะได้ผล (ตามความประสงค์sudo) แต่แนวทางปฏิบัติที่ดีที่สุดคือหลีกเลี่ยงการรันคำสั่งในฐานะรูททุกที่ที่ทำได้
dwurf

@dwurf ขอบคุณสำหรับคอมเม้น มันเป็นเพียงทางเลือกสำหรับคำตอบข้างต้น :)
นาบิน

1
ไม่ใช่วิธีแก้ปัญหาเช่นกัน - คุณไม่ต้องการใช้ repo ของคุณเป็น sudo
Wax Cage

1
@WaxCage ใช่ แต่คุณเห็นข้อความตัวหนาขนาดใหญ่อยู่ที่นั่นแล้วหรือยัง? :)
บิน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.