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.

Arthur Yakovlev
fonte
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

abyx
fonte
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/
René Höhle
fonte
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 
Ganhou Jun Bae
fonte
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.

Johannes Thoma
fonte
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
24

No meu caso, trabalhe bem depois:

rm -f .git/FETCH_HEAD

git branch -u
shilovk
fonte
1
Também funcionou para mim neste caso em particular .
P. Mergey
Para mim, também foi a solução. Obrigado por esta opção de solução.
Francisco Maria Calisto
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.

pg2286
fonte
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/
Sempre ensolarado
fonte
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.

Raio
fonte
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).

Nicholas Westby
fonte
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.

fogão
fonte
7

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

$ sudo chown -R <username> .git/

Shivam Kohli
fonte
6

Simplesmente vá para sua pasta raiz e execute este comando:

chmod a+rw .git/FETCH_HEAD
Suvajit Chakraborty
fonte
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.

jdf
fonte
Diretório oculto, que faria um thunk.
18715 Ian McLaughlin,
4

Isso resolverá todas as permissões na pasta

sudo chown -R $(whoami) ./
Pablo Papalardo
fonte
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. 🎉

eonista
fonte
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 ;)

Yuseferi
fonte
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á.

Oleg Dmitriev
fonte
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
Shahbaz
fonte
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

Rob Bowman
fonte
1

No meu caso,

sudo chmod ug + wx .git -R

este comando funciona.

narwanimonish
fonte
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..!!

Nakshtra Pradhan
fonte
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 ...

Vince
fonte
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.

ysvet
fonte
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.

thebiggestlebowski
fonte
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.

Aaron
fonte
0

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

sudo chown -R $(whoami) $(brew --prefix)/*
rony36
fonte
-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.

numan947
fonte