Fehler beim Abrufen von git - unzureichende Berechtigung zum Hinzufügen eines Objekts zur Repository-Datenbank .git / Objekte

112

Ich habe einen Git-Fehler: "Unzureichende Berechtigung zum Hinzufügen eines Objekts zur Repository-Datenbank .git / Objekte" jedes Mal, wenn ich "Git-Pull-Ursprung entwickeln" lasse.

    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
unnati patil
quelle
1
Offensichtliche Frage: Haben Sie haben Zugriffsrechte auf die Dateien auf der Festplatte?
Lasse V. Karlsen
17
Überprüfen Sie die Berechtigungen der .git/objectsDatei. Es hört sich so an, als hätten Sie sudoirgendwann in der Vergangenheit fälschlicherweise verwendet und sich selbst das Eigentum übertragen root.
Chris Hayes
Ich bekomme das gleiche Problem @ChrisHayes Aber welche .git / object-Datei? Wo ist diese Datei / dieses Verzeichnis?
pedroremedios
1
@pedroremedios .gitist ein Verzeichnis, das an der Basis jedes Git- Repos existiert.
Chris Hayes

Antworten:

255

Vorausgesetzt, @ChrisHayes hat Recht mit einem versehentlichen Sudo, sollte dies das Problem beheben. Aus Ihrem Repository heraus:

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

Update : Wenn Sie den illegal group nameFehler erhalten, versuchen Sie stattdessen Folgendes:

sudo chown -R $(id -u):$(id -g) "$(git rev-parse --show-toplevel)/.git"
dwurf
quelle
7
Was macht git rev-parse --show-topleveldas Ich konnte das Problem beheben, indem ich es chown -R user:userim obersten Verzeichnis meines Repos verwendete.
Matt K
9
@MattK Dadurch wird das oberste Verzeichnis Ihres Repos abgerufen, sodass der Befehl unabhängig davon funktioniert, wo in Ihrem Repo Sie sich gerade befinden. Wenn Sie bereits in der Wurzel sind, können Sie einfach laufensudo chown -R $USER:$USER .git
dwurf
7
Ich bekomme: illegal group name
Ian
1
Ich habe den falschen Benutzernamen verwendet. Der Befehl hat funktioniert. Danke dir.
Ian
1
es passierte mir auch nach einem versehentlichen sudo vorher. Das Ändern des Besitzers / der Gruppe hat das
Problem
10

Gehen Sie zum Stammverzeichnis des Projekts und führen Sie die folgenden Befehle aus, um dieses Problem zu beheben.

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

Meins war ein dummer Fehler ... der richtige Benutzername und die richtige Gruppe wurden festgelegt, aber www-data war das Konto, auf das zugegriffen wurde. Das Verzeichnis gehörte vaindil: www-data, aber die Berechtigungen waren 755, sodass www-data nicht darauf schreiben konnte. Es wurde behoben mit:

$ sudo chmod -R 775 /path/to/repo
Vaindil
quelle
1

KEINE GUTE PRAXIS (nur eine Alternative)

Ich benutze Ubuntu und hatte das gleiche Problem. Um das Problem zu lösen, habe ich einfach den Benutzer auf root umgestellt und sehe keinen weiteren Fehler.

$su
password

Dann,

$git pull origin master

Empfohlener Weg: ÄNDERN SIE DIE ERLAUBNIS DES VERZEICHNISSES

Nabin
quelle
4
Dies funktioniert (wie auch sudo), es wird jedoch empfohlen, Befehle nach Möglichkeit nicht als Root auszuführen.
dwurf
@dwurf Danke für den Kommentar. Es war nur eine Alternative zu der obigen Antwort. :)
Nabin
1
KEINE LÖSUNG - Sie möchten Ihr Repo nicht als Sudo verwenden.
Wax Cage
1
@WaxCage Ja, aber sehen Sie den großen fetten Text bereits dort? :)
Nabin