Tentative de git pull avec erreur: impossible d'ouvrir .git / FETCH_HEAD: autorisation refusée


209

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

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

Ensuite j'essaye 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.


Avez-vous ajouté votre clé publique au compte github?
madhead

3
Avez-vous une autorisation d'écriture pour le répertoire local et les fichiers dans lesquels vous essayez de tirer? De plus, cela sudon'aide probablement pas du tout ici car il a besoin d'accéder à vos clés ssh (pas à celles de root).
Benjamin Bannier

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

Réponses:


193

Il semble que le premier ne fonctionne pas parce que votre utilisateur n'a pas les autorisations pour modifier ce répertoire, et le second parce que votre utilisateur root n'a pas les bonnes clés SSH pour accéder à ce référentiel git.

Selon ce que vous essayez de faire, il peut être préférable de cloner le référentiel dans un répertoire différent, ou peut chown- être le répertoire actuel pour avoir un accès complet à votre utilisateur


Je suis confronté au même problème et je ne sais pas si je peux donner à mon www-datautilisateur l'autorisation de mettre à jour le .gitrépertoire. J'appelle le script shell en utilisant php sur http dans le navigateur. Détails ici
KillABug

13
Cela se produit souvent lorsque vous oubliez accidentellement que vous avez couru sudo suet que vous agissez en tant que root dans un repo. Un simple sudo chown -R <username> .dans ce répertoire fonctionne magique!
Ray

149

Vérifiez si vous disposez des autorisations suffisantes sur le .git/répertoire. Vous devez avoir des autorisations d'écriture. Vous pouvez les définir avec la commande suivante.

Accédez à votre dossier de projet:

chown -R youruser:yourgroup .git/

1
Cela me donnechown: youruser: Invalid argument
zakdances

43
Cela devrait êtrechown -R youruser .git/
mélanger le

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

Cela semble être un problème très courant .. ok si vous travaillez avec un utilisateur différent et que quelque chose d'un autre utilisateur vous a changé vos autorisations, c'est un peu délicat.
René Höhle

Si cela chownne fonctionne pas, exécutez également cette commandesudo chmod 0777 -R .git/
Kiran

49

Si vous souhaitez donner l'autorisation au groupe,

sudo chmod g+w .git -R

a fonctionné le mieux pour moi.

Pour MacOS

sudo chmod -R g+w .git 

29

Il s'agit d'un problème d'autorisation UNIX. Ne pas utiliser sudopour cloner le référentiel. Vous n'avez pas les mêmes clés ssh que root et vous ne devriez de toute façon pas travailler en tant que root. Essayez ls -lade trouver les autorisations sur les fichiers et utilisez chmod(ou sudo chown) pour les corriger. J'espère que cela pourra aider.


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


21

La réponse à ce problème vous assure que .git / FETCH_HEAD a des privilèges d'écriture et vous serez prêt.

J'ai eu ce problème sur Windows et il a été résolu en accordant des autorisations d'écriture.

Sous Unix, on peut s'exécuter à chmod a+rw .git/FETCH_HEADpartir du référentiel de projet, après quoi il devrait fonctionner.


ne fonctionne pas .git/FETCH_HEADseul si le problème d'autorisation est activé .git.
Cœur du

17

Essayez comme ça,

Étape 1: Vérifiez d'abord qui vous êtes? il renverra le nom d'utilisateur actuel, par exemple ubuntu

$ whoami 

Étape 2: définissez ensuite l'autorisation pour votre utilisateur actuel, dans ce cas, ubuntu en

sudo chown -R ubuntu .git/

cela fonctionne pour moi lors de l'exécution de l'installation de discours sur Amazon lightsail ubuntu
Jide

11

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.


ne fonctionne pas .git/FETCH_HEADseul si le problème d'autorisation est activé .git.
Cœur du

Je devais autoriser l'accès en écriture au dossier git pour le groupesudo chmod g+w .git/FETCH_HEAD
William

sudo chmod g+w .git/FETCH_HEAD, solution parfaite.
Rishi Kulshreshtha

9

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

Je l'ai corrigé en exécutant Git Bash en tant qu'administrateur (clic droit, exécuter en tant qu'administrateur).


9

Si vous ne vous êtes pas ajouté au groupe propriétaire .git/, vous devriez.

sudo usermod -a -G $(stat -c '%G' .git) $USER
sudo chmod g+u .git -R
sudo chmod g+u .gitignore
su - $USER

Ce que cela fait:

  1. découvre quel groupe possède .git/ et ajoute votre utilisateur à ce groupe.
  2. s'assure que les membres du groupe disposent des mêmes autorisations que le propriétaire pour .git/ .
  3. répète cela pour .gitignore lequel vous aurez probablement besoin
  4. vous déconnecte et vous reconnecte pour actualiser les autorisations de votre fichier d'appartenance à un groupe

Si vous avez récemment fait quelque chose comme ça (vous êtes ajouté au groupe qui en est propriétaire .git/), vous devez vous déconnecter et vous reconnecter avant de pouvoir écrire .git/FETCH_HEADpendant votre git pull.


7

Définissez l'autorisation pour votre utilisateur actuel en exécutant la commande

$ sudo chown -R <username> .git/



4

Sous Windows 7, lorsque j'ai eu ce problème, c'était parce que j'avais caché le dossier .git. Les autorisations étaient bien, c'était juste caché. L'affichage du dossier l'a résolu.


Répertoire caché, qui serait un thunk.
Ian Newland


3

Cela a fonctionné pour moi:

  1. Cliquez avec le bouton droit sur le dossier .git
  2. cliquez sur obtenir des informations
  3. définir une autorisation pour votre utilisateur
  4. cliquez sur l'icône Cog et cliquez sur appliquer aux éléments inclus

Aucune autre autorisation refusée des erreurs dans git. 🎉


2

Regardez le propriétaire et le groupe du .gitrépertoire avec (allez d'abord dans le répertoire parent de .git) ll .git, regardez le groupe et le propriétaire du répertoire, ajoutez votre utilisateur au groupe du propriétaire avecsudo usermod -a -G yourusername groupsofonwner , puis déconnectez-vous => connexion et tout ce qui fonctionne .

Donc en été

  1. aller dans le répertoire parent de git

    $cd your path
    
  2. trouver le groupe propriétaire du .gitdirecotry

    $ll .git     
    
  3. ajoutez votre utilisateur à ce groupe

    $usermod -a -G yourusername ownergroupofgit
    
  4. La déconnexion et la connexion au système pour cette modification prennent effet.

  5. Profitez-en ;)


2

Vous avez ce problème lorsque le dossier .git est masqué et que tous les fichiers qu'il contient sont également masqués. Ne masquez que le dossier .git sans mise à jour récursive des fichiers et cela fonctionnera.


2

Les raisons de cette erreur peuvent être multiples, mais dans mon cas, j'ai mis à jour la branche avec root, puis lorsque j'ai essayé de la mettre à jour avec un utilisateur normal, cela me donne une erreur.

essayez les deux solutions, on devrait travailler pour vous

1- sudo chmod g+w .git -R

si cela ne fonctionne pas, essayez la prochaine solution, j'espère que cela résoudra votre problème

2 - rm -f .git/FETCH_HEAD

1

J'ai eu ce message lors de l'utilisation des extensions git pour Windows. Ma solution était de simplement fermer les extensions git, puis de les rouvrir en tant qu'administrateur



1

Ce problème se produit lorsque vous ne donnez pas les autorisations suffisantes au dossier .git. Pour résoudre ce problème-

  1. Accédez d'abord à votre répertoire de travail.
  2. Entrez cette commande-

    sudo chmod a + rw .git -R

J'espère que ça aide..!!


1

J'ai eu exactement la même erreur mais dans mon cas, le problème était le résultat de la reconstruction d'Apache après une mise à niveau vers la version PHP. Pour faire court, j'ai oublié d'installer le module Apache 'suexec'.

Cela n'avait rien à voir avec le groupe ou la propriété. Cela ne m'a pris que deux jours pour comprendre, quelqu'un m'a tiré dessus ...


1

Dans mon cas, j'avais un système à double démarrage (Windows 10 et Linux) avec un dossier de projet sur un disque NTFS. Il s'est avéré que sur une autre mise à jour, Windows 10 permettait de lui-même un "démarrage rapide" dans ses paramètres. Après l'avoir décochée dans Windows - "l'erreur: ne peut pas ouvrir .git / FETCH_HEAD: autorisation refusée" sous Linux a disparu.


0

Je l'ai obtenu car j'avais plus d'un compte utilisateur sur ma boîte. J'étais connecté en tant qu'utilisateur A et j'étais dans un répertoire pour l'utilisateur B. L'utilisateur A n'était pas autorisé à utiliser les informations de l'utilisateur B. Une fois que j'ai réalisé que je n'étais pas là où je pensais être dans le système de fichiers, cette erreur était logique.


0

si vous rencontrez le même problème dans le serveur Windows, vous devez exécuter la ligne de commande avec suffisamment d'autorisations, telles que les autorisations d'administrateur.


0

pour l'utilisateur MacOS (si High Sierra ou version supérieure) utilisez ceci:

sudo chown -R $(whoami) $(brew --prefix)/*

-1

TL; DR: dans les systèmes à double démarrage, désactivez le démarrage rapide pour Windows

J'avais ce problème dans mon système Ubuntu / Windows à double démarrage. Je n'ai rien pu écrire dans aucune des partitions partagées avec Windows (partitions NTFS).

J'ai récemment réinstallé les deux et j'ai oublié de désactiver le "Démarrage rapide" dans Windows. Tout est revenu à la normale après avoir redémarré dans Windows et désactivé cette fonctionnalité et redémarré à nouveau.


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.