Estou recebendo um erro incomum ao tentar executar um "git push" no meu repositório GitHub:
Contando objetos: 8, pronto. Compressão delta usando 2 threads. Compactando objetos: 100% (4/4), pronto. Escrevendo objetos: 100% (5/5), 1,37 KiB, pronto. Total 5 (delta 2), reutilizado 0 (delta 0) error: permissão insuficiente para adicionar um objeto ao repositório de banco de dados ./objects fatal: falha ao gravar o objeto error: unpack-objects saiu com o código de erro 128 erro: falha ao descompactar: saída anormal dos objetos descompactados Para [email protected]: bixo / bixo.git ! [remoto rejeitado] mestre -> mestre (n / a (erro de descompactação)) erro: falha ao enviar algumas referências para '[email protected]: bixo / bixo.git'
- Após um clone limpo do GitHub, eu posso editar / adicionar / confirmar / enviar um arquivo modificado.
- Se eu repetir isso uma segunda vez, recebo o erro acima.
- Posso enviar para outros repositórios do GitHub muito bem.
- Eu verifiquei as permissões de arquivo / diretório do meu lado e elas parecem OK.
- Estou executando o git 1.6.2.3 no Mac OS X 10.5.8
O repositório acima foi a fonte da minha diversão para uma pergunta anterior do Stack Overflow ( SO 1904860 ), então talvez o repositório do GitHub tenha sido corrompido. O único problema semelhante que encontrei através da pesquisa foi um problema de descompactação relatado no github. Alguém já teve esse problema antes, principalmente quando não está usando o GitHub?
foo
egit
; ambos podem ler/opt/git/<repo>
, mas apenasgit
podem escrever para ele.git
o padrão é o usuário atual, se não houver nenhum.git/config
, o que eu esqueci. Nenhuma das respostas elaboradas abaixo foi necessária.Respostas:
Quando você vê esse erro fora do github, aqui está uma solução.
Obtive isso em: http://mapopa.blogspot.com/2009/10/git-insufficient-permission-for-adding.html
Depois disso, o daemon git deve usar as permissões de arquivo de grupo ao gravar em .git / objects.
fonte
sudo chmod -R g+ws *
?git config core.sharedRepository true
.Geralmente, esse problema é causado por permissões incorretas de usuário e grupo no sistema de arquivos dos servidores Git. O repositório git deve ser de propriedade do usuário e também do seu grupo.
Exemplo:
Se o usuário for chamado "git", o grupo "gitgroup" e o local do repositório Git for: [email protected]: path / to / repo.git
então faça um:
Isso corrigiu o erro de permissão insuficiente do git para mim.
fonte
fonte
chmod 777
nunca é uma boa solução, apenas uma solução insegura. Tente @ resposta de Syvex vez (com setgid)Isso aconteceu comigo quando tentei
git pull
. Algumas análises mostraram que alguém havia se comprometido com a raiz no passado, criando alguns objetos com propriedade de raiz.git/objects
.Então eu corri
e isso mostrou a
root
propriedade de alguns objetos (diretórios) como este:Então eu corri
e funcionou!
Eu estava substituindo o usuário pelo meu usuário real, é claro.
fonte
Nada do acima funcionou para mim. Algumas horas depois, encontrei o motivo do problema: usei um repositório do tipo
Infelizmente, eu armazenei uma sessão de massa com o nome
example.com
que foi configurado para fazer login como usuáriomyOtherUser
.Então, enquanto eu pensava que o git se conecta ao host
example.com
com o usuário 'git', o Git / TortoiseGit se conectou à sessão de massaexample.com
que usa o usuáriomyOtherUser
. Isso leva ao mesmo..insufficient permission..
erro exato (porque os dois usuários estão em grupos diferentes).Solução: renomeie a sessão de massa
example.com
para[email protected]
fonte
chmod deve ser mostrado, então a linha correta é:
fonte
Curiosamente, eu tive esse problema em um clone do repositório que tinha, mas não em outro. Além de clonar novamente o repositório (o que um colega de trabalho fez para solucionar esse problema com êxito), consegui fazer uma "redefinição do git" para o commit que eu tinha antes do início das falhas. Em seguida, confirmei novamente as alterações e consegui avançar com êxito depois disso. Portanto, apesar de todas as indicações, houve um problema no servidor; nesse caso, aparentemente isso indica alguma estranheza no repositório local.
fonte
Eu estava recebendo esse erro porque toda vez que um usuário envia algum conteúdo, o grupo do arquivo é alterado para o usuário. E, se outro usuário tentasse entrar no repositório, isso causaria erro de permissão e o envio foi rejeitado. Portanto, é necessário solicitar ao seu administrador de sistema que altere as configurações do repositório para que o grupo de qualquer arquivo no repositório não seja alterado para qualquer envio por qualquer usuário.
Para evitar esse problema, verifique se, ao inicializar seu repositório git, use o comando "git init --shared = group".
fonte
Se você ainda receber esse erro depois de definir as permissões, poderá ser necessário modificar sua máscara de criação. Descobrimos que nossas novas confirmações (pastas sob objetos) ainda estavam sendo criadas sem permissão de gravação em grupo, portanto, apenas a pessoa que as confirmou poderia enviar para o repositório.
Corrigimos isso definindo a umask dos usuários do SSH como 002 com um grupo apropriado compartilhado por todos os usuários.
por exemplo
onde o 0 do meio está permitindo a gravação do grupo por padrão.
fonte
Depois de adicionar algumas coisas ... comprometa-as e, depois de tudo terminado, empurre! BANG !! Inicie todos os problemas ... Como você deve observar, existem algumas diferenças na maneira como os projetos novos e os existentes foram definidos. Se outra pessoa tentar adicionar / confirmar / enviar os mesmos arquivos ou conteúdo (o git mantém os dois mesmos objetos), enfrentaremos o seguinte erro:
Para resolver esse problema, você deve ter em mente o sistema de permissões do sistema operacional, pois neste caso você é restringido por ele. Você entende melhor o problema, vá em frente e verifique a pasta do seu objeto git (.git / objects). Você provavelmente verá algo assim:
* Observe que as permissões desse arquivo foram concedidas apenas para seus usuários, ninguém nunca poderá alterá-lo ... *
RESOLVER O PROBLEMA
Se você tiver permissão de superusuário, poderá avançar e alterar todas as permissões usando a etapa dois; em qualquer outro caso, você precisará solicitar a todos os usuários com objetos criados com seus usuários, use o comando a seguir para saber quem eles são :
Agora você e todos os usuários proprietários do arquivo terão que alterar a permissão desses arquivos, fazendo:
Depois disso, você precisará adicionar uma nova propriedade equivalente a --shared = group feita para o novo repositório, de acordo com a documentação, isso torna o repositório gravável em grupo, faça-o executando:
https://coderwall.com/p/8b3ksg
fonte
Tente fazer o seguinte:
Vá para o seu servidor
Em seguida, vá para a sua cópia de trabalho (repositório local) e reembale-a
git repack master
Funciona perfeitamente para mim.
fonte
você pode usar isso
fonte
O diretório é seu repositório Git.
Então faça:
Você verá alterações sobre confirmações por outras pessoas.
fonte
fonte
OK - verifica-se que houve um problema de permissão no GitHub que ocorreu durante a bifurcação do emi / bixo para o bixo / bixo. Depois que o Tekkub os corrigiu, começou a trabalhar novamente.
fonte
Como o erro lida com permissões na pasta de objetos, fiz uma tarefa diretamente na pasta de objetos e funcionou para mim.
fonte
Isso funciona:
fonte
chmod
Altera as permissões de arquivo e precisa de modos como argumentos, não usuários e grupos. Échmod -R ${some_octal_num} bla
ouchown -R ${some_user}:${some_group} bla
Eu acho que muitos como eu acabam em fóruns como este quando o problema do git, conforme descrito acima, ocorre. No entanto, existem tantas causas que podem levar ao problema que eu só quero compartilhar o que causou meus problemas para que outros aprendessem, como eu já aprendi acima.
Tenho meus repositórios em um NAS Linux da sitecom (nunca compre NAS da Sitecom, por favor). Eu tenho um repositório aqui que é clonado em muitos computadores, mas que de repente me foi negado pressionar. Recentemente, instalei um plug-in para que meu NAS pudesse permanecer como um servidor squeezebox.
Este servidor procura mídia para compartilhar. O que eu não sabia era que, possível por causa de um bug, o servidor altera a configuração de usuário e grupo para espremer: user para todos os arquivos em que ele pesquisa. E isso é TODOS os arquivos. Alterando assim os direitos que tive que pressionar.
O servidor se foi e as configurações de direitos apropriadas são restabelecidas e tudo funciona perfeitamente.
eu usei
Onde myuser e mygroup fora do curso devem ser substituídos pelas configurações apropriadas para o seu sistema. tente git: git ou gituser: gituser ou qualquer outra coisa que você possa gostar.,
fonte
Verifique o repositório: $ git remote -v
Observe que há uma substring 'git @' aqui, ele instrui o git a se autenticar como nome de usuário 'git' no servidor remoto. Se você omitir essa linha, o git será autenticado com um nome de usuário diferente; portanto, esse erro ocorrerá.
fonte
No meu caso, não havia autenticação unificada (por exemplo, no domínio + serviço semelhante ao AD) entre minha máquina e o servidor virtual git. Portanto, os usuários e o grupo git são locais para o servidor virtual. No meu caso, meu usuário remoto (que eu uso para fazer login no servidor remoto) não foi adicionado ao grupo git remoto.
Depois disso, verifique as permissões descritas nas postagens acima ...
fonte
Você tentou sudo git push -u origin --all ? Às vezes, é a única coisa que você precisa para evitar esse problema. Ele solicita a senha do sistema administrativo - a que você pode fazer login na sua máquina - e é isso que você precisa enviar - ou confirmar, se for o caso.
fonte