No servidor remoto, tenho um gancho pós-recebimento configurado para fazer um check-out git do meu repositório:
#!/bin/sh
GIT_WORK_TREE=/var/www/<website> git checkout -f
Mas quando faço o envio da minha máquina local para o repositório git no servidor, recebo as seguintes mensagens de erro:
remote: error: unable to unlink old '<file>' (Permission denied)
Isso aparece várias vezes, uma mensagem de erro para quase todos os arquivos.
No entanto, eu tenho um arquivo README.txt que eu posso alterar usando o git, aqui estão suas permissões:
-rw-r--r-- 1 <serverusername> <serverusername> 2939 Aug 2 10:58 README.txt
Mas outros arquivos com exatamente o mesmo proprietário e as mesmas permissões me dão esse erro.
Em outro repositório local para outro site, tenho os arquivos com o nome de usuário da minha máquina local como proprietário e, quando envio ao servidor remoto, ele respeita o proprietário dos arquivos e funciona como um encanto.
Obviamente, parece um erro relacionado a permissões, mas não consigo encontrar uma maneira de corrigi-lo, alguma sugestão?
fonte
sudo chmod -R g+w
as pastas culpadas.mv
ações do que apenas sobrescritas.ls -l
exibição indica o tipo de arquivo e não está relacionado às permissões. Os nove caracteres restantes estão em três conjuntos, cada um representando uma classe de permissões como três caracteres. O primeiro conjunto representa a classe de usuário. O segundo conjunto representa a classe do grupo. O terceiro conjunto representa a outra classe. Og+w
no chmod dá o conjunto grupo (og
parâmetro) permissão para escrever (ow
parâmetro)Este comando resolveria o problema. Dá permissões de gravação para a pasta.
fonte
Se você estiver usando algum IDE, provavelmente o problema é que esse arquivo foi usado por algum processo. Como seu tomcat pode estar usando o arquivo Tente identificar esse processo específico e fechá-lo. Isso deve resolver o seu problema.
fonte
Eu tive o mesmo problema e nenhuma das soluções acima funcionou para mim. Eu apaguei a pasta incorreta. Então:
Excluiu todos os arquivos remanescentes para limpar o status do git e, em seguida, fez:
Finalmente funcionou.
NOTA: Se a pasta era, por exemplo, uma pasta pública com arquivos de construção, lembre-se de reconstruir os arquivos
fonte
Eu acho que o problema pode estar na propriedade da pasta, então defina-a como a propriedade do usuário atual
Você pode encontrar a solução [aqui] [1]fonte
FWIW - Eu tive um problema semelhante e não tenho certeza se isso o aliviou (além do mod de permissão): Fechando o Eclipse que estava usando a ramificação com esse problema.
fonte
Esta é uma pergunta antiga, mas isso pode ajudar os usuários de Mac.
Se você estiver copiando arquivos do Time Machine manualmente, em vez de restaurá-los pelo Time Machine, ele adicionará ACLs a tudo, o que pode prejudicar suas permissões.
Por exemplo, a seção deste artigo que diz "Como corrigir permissões de arquivo do Mac OS X" mostra que "todos" têm permissões personalizadas, o que estraga tudo:
Você precisa remover as ACLs desses diretórios / arquivos. Esta resposta do Superusuário entra nele, mas aqui está o comando:
sudo chmod -RN .
Depois, verifique se os diretórios e arquivos têm as permissões adequadas. Eu uso
750
para diretórios e644
arquivos.fonte
Eu recebo esse erro e outros erros estranhos do git quando tenho um servidor em execução (no Intellij). Parar o servidor e tentar novamente o comando git freqüentemente o corrige.
fonte
Trabalhou para mim
fonte
Fiz o trabalho para mim.
fonte
Alguns arquivos estão protegidos contra gravação que nem o git pode gravá-lo. Altere a permissão da pasta para permitir a gravação, por exemplo, sudo chmod 775 foldername
E então git pull novamente
fonte
Lembre-se também de verificar a permissão do próprio diretório raiz!
Você pode encontrar:
e o erro 'permissão negada' será exibido.
fonte
Puxar pode ter criado alterações locais.
Adicione seu arquivo não rastreado:
Stash changes.
Solte as alterações locais.
Puxe com permissão sudo
fonte