Lỗi khi kéo từ git - không đủ quyền để thêm một đối tượng vào cơ sở dữ liệu kho lưu trữ .git / objects


112

Tôi gặp lỗi git: "không đủ quyền để thêm một đối tượng vào cơ sở dữ liệu kho lưu trữ .git / objects" mỗi khi tôi thực hiện "git pull origin development".

    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
Câu hỏi hiển nhiên: Bạn quyền truy cập vào các tệp trên đĩa không?
Lasse V. Karlsen

17
Kiểm tra quyền của .git/objectstệp. Có vẻ như bạn có thể đã sử dụng nhầm sudovào một thời điểm nào đó trong quá khứ và trao quyền sở hữu rootthay vì cho chính mình.
Chris Hayes

Tôi đang gặp vấn đề tương tự @ChrisHayes Nhưng tệp .git / đối tượng nào? Tập tin / thư mục đó ở đâu?
pedroremedios

1
@pedroremedios .gitlà một thư mục tồn tại ở cơ sở của mỗi git repo.
Chris Hayes

Câu trả lời:


255

Giả sử @ChrisHayes nói đúng về một sudo tình cờ, điều này sẽ khắc phục. Từ bên trong kho lưu trữ của bạn:

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

Cập nhật : đối với những người bạn gặp illegal group namelỗi, hãy thử cách này thay thế:

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

7
Làm gì git rev-parse --show-toplevel? Tôi đã có thể khắc phục sự cố chỉ bằng cách sử dụng chown -R user:usertrên thư mục cấp cao nhất của kho lưu trữ của mình.
Matt K

9
@MattK này sẽ lấy thư mục cấp cao nhất của kho lưu trữ của bạn, vì vậy lệnh sẽ hoạt động bất kể bạn hiện đang ở đâu trong kho lưu trữ của bạn. Nếu bạn đã ở trong thư mục gốc, bạn chỉ có thể chạysudo chown -R $USER:$USER .git
dwurf

7
Tôi nhận được: illegal group name
Ian

1
Tôi đã sử dụng sai tên người dùng. Lệnh đã hoạt động. Cảm ơn bạn.
Ian

1
nó cũng đã xảy ra với tôi sau một sudo tình cờ trước đây. thay đổi chủ sở hữu / nhóm đã sửa nó
Asped

10

Đi tới thư mục gốc của dự án và chạy các lệnh bên dưới để khắc phục sự cố này,

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

2

Của tôi là một sai lầm ngu ngốc ... tên người dùng và nhóm phù hợp đã được đặt, nhưng www-data là tài khoản truy cập vào nó. Thư mục thuộc sở hữu của vaindil: www-data, nhưng quyền là 755 nên www-data không thể ghi vào nó. Đã sửa nó bằng:

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


1

KHÔNG PHẢI LÀ MỘT THỰC HÀNH TỐT (Chỉ là một phương pháp thay thế)

Tôi đang sử dụng Ubuntu và gặp phải vấn đề tương tự. Để giải quyết nó, tôi chỉ cần chuyển người dùng sang root và tôi không thấy lỗi nào nữa.

$su
password

Sau đó,

$git pull origin master

Cách đề xuất: THAY ĐỔI GIẤY PHÉP CỦA GIÁM ĐỐC


4
Điều này sẽ hoạt động (theo ý muốn sudo), nhưng cách tốt nhất là tránh chạy lệnh dưới quyền root bất cứ khi nào có thể.
dwurf

@dwurf Cảm ơn bạn đã nhận xét. Nó chỉ là một sự thay thế cho câu trả lời ở trên. :)
Nabin

1
KHÔNG PHẢI LÀ GIẢI PHÁP - bạn không muốn sử dụng repo của mình như sudo.
Wax Cage vào

1
@WaxCage Có, nhưng bạn có thấy dòng chữ in đậm lớn đã có ở đó không? :)
Nabin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.