Errore durante il pull da git: autorizzazione insufficiente per l'aggiunta di un oggetto al database del repository .git / objects


112

Ho git errore: "autorizzazione insufficiente per aggiungere un oggetto al database del repository .git / objects" ogni volta che faccio "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
Domanda ovvia: disponi dei diritti di accesso ai file su disco?
Lasse V. Karlsen

17
Controlla le autorizzazioni del .git/objectsfile. Sembra che tu possa aver usato per errore sudoin passato e dato la proprietà rootpiuttosto che a te stesso.
Chris Hayes

Sto riscontrando lo stesso problema @ChrisHayes Ma quale file .git / objects? Dov'è quel file / directory?
pedroremedios

1
@pedroremedios .gitè una directory che esiste alla base di ogni repository git.
Chris Hayes

Risposte:


255

Supponendo che @ChrisHayes abbia ragione su un sudo accidentale, questo dovrebbe risolverlo. Dall'interno del tuo repository:

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

Aggiornamento : per quelli di voi che ottengono l' illegal group nameerrore, provate questo invece:

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

7
Cosa fa git rev-parse --show-toplevel? Sono stato in grado di risolvere il problema semplicemente utilizzando chown -R user:userla directory di primo livello del mio repository.
Matt K

9
@MattK questo otterrà la directory di primo livello del tuo repository, quindi il comando funzionerà indipendentemente da dove ti trovi attualmente nel tuo repository. Se sei già nella root puoi semplicemente eseguiresudo chown -R $USER:$USER .git
dwurf

7
Ottengo: illegal group name
Ian

1
Stavo usando il nome utente sbagliato. Il comando ha funzionato. Grazie.
Ian

1
è successo anche a me dopo un sudo accidentale prima. il cambiamento del proprietario / gruppo lo ha risolto
Asped

10

Vai alla directory principale del progetto ed esegui i seguenti comandi per risolvere questo problema,

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

2

Il mio è stato uno stupido errore ... sono stati impostati il ​​nome utente e il gruppo corretti, ma www-data era l'account che vi accedeva. La directory era di proprietà di vaindil: www-data, ma i permessi erano 755 quindi www-data non poteva scriverci. Risolto con:

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


1

NON UNA BUONA PRATICA (solo un'alternativa)

Sto usando Ubuntu e ho affrontato lo stesso problema. Per risolverlo, ho semplicemente passato l'utente a root e non vedo ulteriori errori.

$su
password

Poi,

$git pull origin master

Modo consigliato: CAMBIARE IL PERMESSO DELLA RUBRICA


4
Questo funzionerà (come sarà sudo), ma è buona norma evitare di eseguire comandi come root ove possibile.
dwurf

@dwurf Grazie per il commento. Era solo un'alternativa alla risposta sopra. :)
Nabin

1
NON È UNA SOLUZIONE: non vuoi usare il tuo repository come sudo.
Gabbia di cera

1
@WaxCage Sì, ma vedi già il grande testo in grassetto? :)
Nabin
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.