Tentando git pull com erro: não é possível abrir .git / FETCH_HEAD: permissão negada


209

Ajuda-me, por favor, estou tentando executar isso no meu terminal:

asgard@asgard-A7N8X2-0:~/CollegePortal$ git pull
error: cannot open .git/FETCH_HEAD: Permission denied

Então eu tento este

asgard@asgard-A7N8X2-0:~/CollegePortal$ sudo git pull
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

Me ajude, eu não entendo esse problema.


Você adicionou sua chave pública à conta do github?
— madhead

3
Você tem permissão de gravação para o diretório local e os arquivos em que tenta puxar? Além disso, provavelmente sudonão ajuda aqui, pois precisa acessar as chaves ssh (não as do root).
— Benjamin Bannier

Eu tive esse problema e resolveu-lo, dando minhas usuário Modificar & Acessos completa permissões para essa pasta (Windows)
— Frank

Respostas:


193

Parece que o primeiro não está funcionando porque seu usuário não tem permissões para alterar esse diretório e o segundo porque seu usuário raiz não possui as chaves SSH corretas para acessar o repositório git.

Dependendo do que você está tentando fazer, pode ser melhor clonar o repositório em um diretório diferente ou talvez chowno diretório atual tenha acesso total ao seu usuário


Estou enfrentando o problema semelhante e não tenho certeza se posso dar ao meu www-datausuário a permissão para atualizar o .gitdiretório. Estou chamando o script de shell usando php sobre http no navegador. Detalhes aqui
— KillABug

13
Isso geralmente acontece quando você esquece acidentalmente que executou sudo sue está agindo como raiz em um repositório. Um simples sudo chown -R <username> .nesse diretório funciona como mágica!
— Raio

149

Verifique se você possui permissões suficientes no .git/diretório. Você deve ter permissões de gravação. Você pode configurá-los com o seguinte comando.

Vá para a pasta do seu projeto:

chown -R youruser:yourgroup .git/

1
Isso me dáchown: youruser: Invalid argument
— zakdances

43
Deve serchown -R youruser .git/
— misture

1
Eu tive que chown .git/e sua pasta pai para que ele funcione
— zadubz

Isso parece ser um problema muito comum .. ok, se você trabalha com um usuário diferente e algo de outro usuário, você alterou suas permissões, é um pouco complicado.
— René Höhle 8/04/2015

Se chownnão trabalhar que também executar este comandosudo chmod 0777 -R .git/
— Kiran

48

Se você deseja dar permissão ao grupo,

sudo chmod g+w .git -R

funcionou melhor para mim.

Para MacOS

sudo chmod -R g+w .git 

29

Este é um problema de permissão do UNIX. Não use sudopara clonar o repositório. Você não possui as mesmas chaves ssh do root e não deve funcionar como root de qualquer maneira. Tente ls -laencontrar as permissões nos arquivos e use chmod(ou sudo chown) para corrigi-los. Espero que ajude.


Exatamente isso! Me deparei com esse problema porque precisava sudo cloneaceitar o novo contrato de licença do XCode. A resposta é aceitar o contrato e clonar sem sudo.
— quer


21

A resposta para esse problema verifique se o .git / FETCH_HEAD possui privilégios de gravação e você estará pronto.

Eu tive esse problema no Windows e foi resolvido concedendo permissões de gravação.

No unix, é possível executar a chmod a+rw .git/FETCH_HEADpartir do repositório do projeto, após o qual deve funcionar.


não funciona .git/FETCH_HEADsozinho se o problema de permissão estiver ativado .git.
— Coeur

17

Tente assim,

Etapa 1: Primeiro verifique quem você é? retornará o nome de usuário atual, por exemplo, ubuntu

$ whoami 

Passo 2: permissão seguida, defina para o usuário atual, nesse caso, ubuntu por

sudo chown -R ubuntu .git/

isso funciona para mim enquanto executa a instalação do discurso no Amazon lightsail ubuntu
— Jide 18/02/19

11

No meu caso, eu só tinha acesso de leitura ao arquivo .git / FETCH_HEAD. Eu tive que fazer "sudo chmod g + w .git / FETCH_HEAD" para poder fazer uma solicitação de recebimento.


não funciona .git/FETCH_HEADsozinho se o problema de permissão estiver ativado .git.
— Coeur

Eu tinha que permitir o acesso de escrita para a pasta git para o gruposudo chmod g+w .git/FETCH_HEAD
— William

sudo chmod g+w .git/FETCH_HEAD, solução perfeita.
— Rishi Kulshreshtha

9

Eu estava tendo o primeiro problema (permissão FETCH_HEAD negada) no Windows.

Corrigi-o executando o Git Bash como administrador (clique com o botão direito do mouse, execute como administrador).


9

Se você não se adicionou ao grupo que possui .git/, deve fazê- lo.

sudo usermod -a -G $(stat -c '%G' .git) $USER
sudo chmod g+u .git -R
sudo chmod g+u .gitignore
su - $USER

O que isso faz:

  1. descobre qual grupo possui .git/ e adiciona seu usuário a esse grupo.
  2. garante que os membros do grupo tenham as mesmas permissões que o proprietário .git/.
  3. repete isso para .gitignoreque você provavelmente precisará
  4. efetua o logout e o logon novamente para atualizar as permissões do arquivo de associação ao grupo

Se você fez algo recentemente recentemente (se adicionou ao grupo que possui .git/ ), precisará sair e fazer login novamente antes de poder escrever .git/FETCH_HEADdurante o seu git pull.


7

Defina a permissão para seu usuário atual executando o comando

$ sudo chown -R <username> .git/



4

Executando o Windows 7, quando tive esse problema, era porque ocultara a pasta .git. As permissões eram boas, estava apenas oculta. Mostrando a pasta resolveu.


Diretório oculto, que faria um thunk.
— 18715 Ian McLaughlin,


3

Isso funcionou para mim:

  1. Clique com o botão direito na pasta .git
  2. clique em obter informações
  3. definir permissão para seu usuário
  4. clique no ícone Cog e clique em aplicar a itens fechados

Não há mais permissão negada erros no git. 🎉


2

Observe o proprietário e o grupo de .gitdiretórios com (primeiro vá para o diretório pai do .git) ll .git, observe o grupo e o proprietário do diretório, inclua seu usuário no grupo de proprietários sudo usermod -a -G yourusername groupsofonwnere faça logout => login e tudo dando certo .

Então, no verão

  1. vá para o diretório pai do git

    $cd your path
    
  2. encontre o proprietário do grupo do .gitdirecotry

    $ll .git     
    
  3. adicione seu usuário a esse grupo

    $usermod -a -G yourusername ownergroupofgit
    
  4. Efetue logout e logon no sistema para essa alteração.

  5. Aproveite ;)


2

Tenho esse problema quando a pasta .git está oculta e todos os arquivos nela também estão ocultos. Torne oculta apenas a pasta .git sem a atualização de arquivos recursivos e ela funcionará.


2

As razões deste erro podem ser múltiplas, mas no meu caso eu atualizei o branch com root e, quando tentei atualizá-lo com o usuário normal, ele me deu um erro.

tente as duas soluções que você deve trabalhar para você

1- sudo chmod g+w .git -R

se não funcionar, tente a próxima solução, espero que resolva o seu problema

2 - rm -f .git/FETCH_HEAD

1

Eu recebi esta mensagem ao usar extensões git para Windows. Minha correção foi simplesmente fechar as extensões git e abrir novamente como administrador



1

Esse problema ocorre quando você não concede permissões suficientes para a pasta .git. Para resolver este problema

  1. Primeiro, navegue para o seu diretório de trabalho.
  2. Digite este comando-

    sudo chmod a + rw .git -R

Espero que ajude..!!


1

Eu tive exatamente o mesmo erro, mas no meu caso, o problema foi o resultado de ter reconstruído o Apache após uma atualização para a versão PHP. Para encurtar a história, esqueci de instalar o módulo Apache 'suexec'.

Não tinha nada a ver com grupo ou propriedade. Isso levou apenas dois dias para descobrir, alguém atirou em mim ...


1

No meu caso, eu tinha um sistema de inicialização dupla (Windows 10 e Linux) com pasta de projeto no disco NTFS. Aconteceu que em outra atualização o Windows 10 ativado por si só "inicialização rápida" em suas configurações. Depois de desmarcá-lo no Windows - o "erro: não pode abrir .git / FETCH_HEAD: permissão negada" no Linux se foi.


0

Consegui isso porque tinha mais de uma conta de usuário em minha caixa. Eu estava logado como usuário A e estava em um diretório para o usuário B. O usuário A não tinha permissão para as coisas do usuário B. Depois que percebi que não estava onde pensava que estava no sistema de arquivos, esse erro fez sentido.


0

se você encontrar o mesmo problema no servidor Windows, precisará executar a linha de comando com permissão suficiente, como permissão de administrador.


0

para usuários do MacOS (se a versão High Sierra ou versão superior) usar este:

sudo chown -R $(whoami) $(brew --prefix)/*

-1

TL; DR: nos sistemas de inicialização dupla, desative a Inicialização rápida para Windows

Eu estava tendo esse problema no meu sistema Ubuntu / Windows de inicialização dupla. Não consegui escrever nada em nenhuma das partições compartilhadas com o Windows (partições NTFS).

Recentemente, reinstalei os dois e esqueci de ativar a "Inicialização rápida" no Windows. Tudo voltou ao normal depois que eu reiniciei o Windows, desliguei esse recurso e reiniciei novamente.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.