246 votes

Essai de git pull avec erreur : cannot open .git/FETCH_HEAD : Permission denied

Aidez-moi s'il vous plaît, j'essaie d'exécuter ceci dans mon terminal :

asgard@asgard-A7N8X2-0:~/CollegePortal$ git pull
error: cannot open .git/FETCH_HEAD: Permission denied

Alors j'essaie celui-ci

asgard@asgard-A7N8X2-0:~/CollegePortal$ sudo git pull
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

Aidez-moi, je ne comprends pas ce problème.

0 votes

Avez-vous ajouté votre clé publique à votre compte github ?

3 votes

Avez-vous les droits d'écriture pour le répertoire et les fichiers locaux dans lesquels vous essayez de tirer ? Aussi, probablement sudo n'est d'aucune utilité ici puisqu'il a besoin d'accéder à vos clés ssh (et non à celles de Root).

0 votes

J'ai eu ce problème et je l'ai résolu en donnant à mon utilisateur des droits de modification et d'accès complet à ce dossier (Windows).

231voto

abyx Points 15304

Il semble que la première ne fonctionne pas parce que votre utilisateur n'a pas les autorisations pour modifier ce répertoire, et la seconde parce que votre utilisateur Root n'a pas les bonnes clés SSH pour accéder à ce dépôt git.

En fonction de ce que vous essayez de faire, il peut être préférable de cloner le dépôt dans un répertoire différent, ou peut-être chown le répertoire courant pour avoir un accès complet pour votre utilisateur

0 votes

Je suis confronté au même problème et je ne suis pas sûr de pouvoir donner mon www-data l'utilisateur a la permission de mettre à jour le .git répertoire. J'appelle le shell script en utilisant php over http dans le navigateur. Détails aquí

33 votes

Cela arrive souvent quand on oublie accidentellement qu'on a exécuté sudo su et vous agissez en tant que Root dans un repo. Un simple sudo chown -R <username> . dans ce répertoire fonctionne comme par magie !

0 votes

@Ray a la réponse ! Cela a parfaitement fonctionné pour moi.

165voto

Stony Points 7677

Vérifiez si vous avez suffisamment de permissions sur le .git/ répertoire. Vous devez avoir les droits d'écriture. Vous pouvez les définir avec la commande suivante.

Allez dans le dossier de votre projet :

chown -R youruser:yourgroup .git/

1 votes

Cela me donne chown: youruser: Invalid argument

49 votes

Il devrait être chown -R youruser .git/

1 votes

Je devais chown .git/ et son dossier parent pour que cela fonctionne

32voto

Johannes Thoma Points 384

Il s'agit d'un problème de permission UNIX. N'utilisez pas sudo pour cloner le référentiel. Vous n'avez pas les mêmes clés ssh que Root et vous ne devriez pas travailler en tant que Root de toute façon. Essayez ls -la pour trouver les permissions sur les fichiers et utiliser chmod (ou sudo chown ) pour les réparer. J'espère que cela vous aidera.

0 votes

Exactement cela ! J'ai rencontré ce problème parce que je devais faire sudo clone afin d'accepter le nouveau contrat de licence de XCode. La réponse est d'accepter l'accord, puis de cloner sans sudo.

12voto

Robert Points 706

Dans mon cas, je n'avais qu'un accès en lecture au fichier .git/FETCH_HEAD. J'ai dû faire "sudo chmod g+w .git/FETCH_HEAD" afin de pouvoir faire une pull request.

0 votes

Ne fonctionne pas avec .git/FETCH_HEAD seul si la question de la permission est sur .git .

0 votes

J'ai dû autoriser l'accès en écriture au dossier git pour le groupe sudo chmod g+w .git/FETCH_HEAD

0 votes

sudo chmod g+w .git/FETCH_HEAD une solution parfaite.

11voto

Nicholas Westby Points 116

J'avais le premier problème (permission refusée pour FETCH_HEAD) sous Windows.

J'ai résolu le problème en exécutant Git Bash en tant qu'administrateur (clic droit, exécuter en tant qu'administrateur).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X