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.