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.

Arthur Yakovlev
la source
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

abyx
la source
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/
René Höhle
la source
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 
Won Jun Bae
la source
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.

Johannes Thoma
la source
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
24

Dans mon cas, fonctionne bien après:

rm -f .git/FETCH_HEAD

git branch -u
shilovk
la source
1
Cela a fonctionné pour moi aussi avec ce cas particulier .
P. Mergey
Pour moi, c'était aussi la solution. Merci pour cette option de solution.
Francisco Maria Calisto
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.

pg2286
la source
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/
Toujours ensoleillé
la source
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.

Rayon
la source
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).

Nicholas Westby
la source
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.

plaques de cuisson
la source
7

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

$ sudo chown -R <username> .git/

Shivam Kohli
la source
6

Accédez simplement à votre dossier racine et exécutez cette commande:

chmod a+rw .git/FETCH_HEAD
Suvajit Chakraborty
la source
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.

jdf
la source
Répertoire caché, qui serait un thunk.
Ian Newland
4

Cela résoudra toutes les autorisations dans le dossier

sudo chown -R $(whoami) ./
Pablo Papalardo
la source
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. 🎉

éoniste
la source
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 ;)

Yuseferi
la source
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.

Oleg Dmitriev
la source
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
Shahbaz
la source
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

Rob Bowman
la source
1

Dans mon cas,

sudo chmod ug + wx .git -R

cette commande fonctionne.

narwanimonish
la source
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..!!

Nakshtra Pradhan
la source
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 ...

Vince
la source
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.

ysvet
la source
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.

thebiggestlebowski
la source
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.

Aaron
la source
0

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

sudo chown -R $(whoami) $(brew --prefix)/*
rony36
la source
-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.

numan947
la source
-1

Dans mon cas, je travaille: Je viens d'écrire sudoavant la commande:

sudo npm run deploy
Андрей Пахомов
la source