web-dev-qa-db-fra.com

Git: échec de l'ouverture du fichier d'index: autorisation refusée pour "statut git". Hébergé sur Bitbucket

Je suis confronté à ce problème depuis quelques jours lorsque j'essaie de créer un statut ou un attrait git. Le référentiel est hébergé sur Bitbucket.

J'ai essayé plusieurs choses pour que cela fonctionne (il y a quelques articles liés à ceci sur stackoverflow, mais ils ne fonctionnaient pas).

Voici le problème:

 utilisateur @ hôte:/repo/$ statut git 
 fatal: ouverture du fichier index échouée: autorisation refusée 
 fatal: statut git - échec de la porcelaine 

Si je fais un "git pull":

 utilisateur @ hôte:/repo/$ git pull 
 remote: objets de comptage: 77, terminé .
 remote: objets compressés: 100% (30/30), terminé .
 remote: total 56 (delta 37), réutilisé 41 (delta 22) 
 erreur: autorisation insuffisante pour ajouter un objet à la base de données du référentiel .git/objects 

 fatal: échec de l'écriture de l'objet 
 fatal: échec de la décompression d'objets 

J'ai vérifié les autorisations locales et tout semble bien se passer. J'ai la permission de tous les fichiers.

Remarque:

Si j'utilise "Sudo", tout semble fonctionner normalement, mais je n'ai aucune information d'identification SSH pour root sur cet ordinateur de déploiement. Cela me fait penser que c'est un problème d'autorisations (comme l'explique l'erreur), cependant: ce que cela pourrait être, si je suis le propriétaire de tous les fichiers, y compris les fichiers contenus dans .git /

Merci d'avance!

21
demogar

J'ai eu la même erreur fatal: index file open failed: Permission denied lors de l'exécution git status et j'ai vérifié .git/index par

$ ls -al .git/index

à ma grande surprise, c'est

----------  1 Kjuly  staff  768248 Sep  2 11:07 .git/index

Je ne sais pas pourquoi et comment cela a changé. Quoi qu’il en soit, après avoir changé sa permission en 644 par

$ chmod 644 .git/index

git status fonctionne.

28
Kjuly

Assurez-vous que le répertoire .git et ses fichiers/sous-répertoires appartiennent à votre utilisateur et qu’ils peuvent les écrire. Cela semble que le référentiel a été cloné sous un autre compte utilisateur ou en tant qu'utilisateur root (par exemple, via Sudo).

Peu importe où la télécommande du référentiel est hébergée, le statut de git n'accède qu'au référentiel local.

5
knittl

J'ai rencontré le même problème avec BitBucket aujourd'hui. Voici la solution de contournement qui a fonctionné pour moi:

git remote set-url Origin https://[email protected]/_my_/_repo_.git
git pull
git Push
git remote set-url Origin [email protected]:_my_/_repo_.git
0
Kmeixner