Erro ao puxar do git - permissão insuficiente para adicionar um objeto ao banco de dados do repositório .git / objects

113

Eu tenho o erro do git: "permissão insuficiente para adicionar um objeto ao banco de dados do repositório .git / objects" toda vez que faço "desenvolvimento da origem do git pull".

    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
fonte
1
Pergunta óbvia: você tem direitos de acesso aos arquivos no disco?
Lasse V. Karlsen,
17
Verifique as permissões do .git/objectsarquivo. Parece que você pode ter usado por engano sudoem algum momento no passado e atribuído a propriedade, roote não a si mesmo.
Chris Hayes,
Estou tendo o mesmo problema @ChrisHayes Mas qual arquivo .git / objects? Onde está esse arquivo / diretório?
pedroremedios de
1
@pedroremedios .gité um diretório que existe na base de cada repositório git.
Chris Hayes,

Respostas:

255

Supondo que @ChrisHayes esteja certo sobre um sudo acidental, isso deve consertar. De dentro do seu repositório:

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

Atualização : para aqueles que estão recebendo o illegal group nameerro, tente o seguinte:

sudo chown -R $(id -u):$(id -g) "$(git rev-parse --show-toplevel)/.git"
dwurf
fonte
7
O que git rev-parse --show-toplevelfazer? Consegui corrigir o problema usando apenas chown -R user:usero diretório de nível superior do meu repo.
Matt K de
9
@MattK obterá o diretório de nível superior do seu repo, de modo que o comando funcionará independentemente de onde você estiver no repo. Se você já está no root, pode apenas executarsudo chown -R $USER:$USER .git
dwurf
7
Eu entendo: illegal group name
Ian
1
Eu estava usando o nome de usuário errado. O comando funcionou. Obrigado.
Ian
1
também aconteceu comigo antes de um sudo acidental. alterar o proprietário / grupo consertou
atualizado em
10

Vá para o diretório raiz do projeto e execute os comandos abaixo para corrigir esse problema,

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

O meu erro foi estúpido ... o nome de usuário e o grupo certos foram definidos, mas www-data foi a conta que o acessou. O diretório pertencia a vaindil: www-data, mas as permissões eram 755, portanto, www-data não poderia gravar nele. Corrigido com:

$ sudo chmod -R 775 /path/to/repo
vaindil
fonte
1

NÃO É UMA BOA PRÁTICA (apenas uma alternativa)

Estou usando o Ubuntu e enfrentei o mesmo problema. Para resolver isso, simplesmente mudei o usuário para root e não vejo mais erros.

$su
password

Então,

$git pull origin master

Forma recomendada: ALTERAR A PERMISSÃO DO DIRETÓRIO

Nabin
fonte
4
Isso funcionará (como funcionará sudo), mas a melhor prática é evitar a execução de comandos como root sempre que possível.
dwurf
@dwurf Obrigado pelo comentário. Era apenas uma alternativa à resposta acima. :)
Nabin
1
NÃO É UMA SOLUÇÃO também - você não quer usar seu repo como sudo.
Wax Cage
1
@WaxCage Sim, mas você já consegue ver o grande texto em negrito? :)
Nabin