Błąd podczas ściągania z git - niewystarczające uprawnienia do dodania obiektu do bazy danych repozytorium .git / objects


113

Mam błąd git: „niewystarczające uprawnienia do dodania obiektu do bazy danych repozytorium .git / objects” za każdym razem, gdy tworzę „tworzenie git pull origin”.

    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
Oczywiste pytanie: czy masz prawa dostępu do plików na dysku?
Lasse V. Karlsen

17
Sprawdź uprawnienia do .git/objectspliku. Wygląda na to, że sudow pewnym momencie w przeszłości przez pomyłkę zostałeś użyty i oddałeś własność rootzamiast sobie.
Chris Hayes,

Otrzymuję ten sam problem @ChrisHayes Ale który plik .git / objects? Gdzie jest ten plik / katalog?
pedroremedios

1
@pedroremedios .gitto katalog, który istnieje u podstawy każdego repozytorium git.
Chris Hayes,

Odpowiedzi:


255

Zakładając, że @ChrisHayes ma rację co do przypadkowego sudo, powinno to naprawić. Z wnętrza repozytorium:

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

Aktualizacja : dla tych, którzy otrzymują illegal group namebłąd, spróbuj zamiast tego:

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

7
Co robi git rev-parse --show-toplevel? Udało mi się rozwiązać problem, używając tylko chown -R user:userkatalogu najwyższego poziomu mojego repozytorium.
Matt K

9
@MattK spowoduje to uzyskanie katalogu najwyższego poziomu repozytorium, więc polecenie będzie działać niezależnie od tego, w którym miejscu repozytorium aktualnie się znajdujesz. Jeśli jesteś już w root, możesz po prostu uruchomićsudo chown -R $USER:$USER .git
dwurf

7
Otrzymuję: illegal group name
Ian

1
Użyłem złej nazwy użytkownika. Komenda zadziałała. Dziękuję Ci.
Ian

1
zdarzyło mi się to również po wcześniejszym przypadkowym sudo. zmiana właściciela / grupy naprawiła to
Asped

10

Przejdź do katalogu głównego projektu i uruchom poniższe polecenia, aby naprawić ten problem,

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

2

Mój był głupim błędem ... ustawiono właściwą nazwę użytkownika i grupę, ale konto-data było kontem uzyskującym do niego dostęp. Katalog był własnością vaindil: www-data, ale prawa dostępu wynosiły 755, więc www-data nie mógł do niego pisać. Naprawiono to za pomocą:

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


1

NIE DOBRA PRAKTYKA (tylko alternatywa)

Używam Ubuntu i napotkałem ten sam problem. Aby go rozwiązać, po prostu przełączyłem użytkownika na roota i nie widzę dalszych błędów.

$su
password

Następnie,

$git pull origin master

Zalecany sposób: ZMIEŃ POZWOLENIE NA KATALOG


4
To zadziała (jak będzie sudo), ale najlepiej jest unikać uruchamiania poleceń z uprawnieniami administratora, jeśli to tylko możliwe.
dwurf

@dwurf Dziękuję za komentarz. To była tylko alternatywa dla powyższej odpowiedzi. :)
Nabin,

1
NIE TAKŻE ROZWIĄZANIE - nie chcesz używać repozytorium jako sudo.
Wax Cage

1
@WaxCage Tak, ale czy widzisz już duży, pogrubiony tekst? :)
Nabin
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.