web-dev-qa-db-fra.com

fatal: impossible d'ouvrir '.git/COMMIT_EDITMSG': autorisation refusée

J'essaie de déployer Octopress sur des pages github. J'ai suivi ces instructions:

http://octopress.org/docs/deploying/github/

Tout a bien fonctionné jusqu'à la partie commit, où j'ai eu une erreur:

fatal: impossible d'ouvrir '.git/COMMIT_EDITMSG': autorisation refusée

Je suis propriétaire de ma page github.io, bien sûr, et je n’avais jamais eu ce problème auparavant. Pourquoi cela se produit-il et, plus important encore, comment puis-je le résoudre?

35
user1754606

Ce n'est pas un message d'erreur du référentiel Git distant, c'est un problème avec vos fichiers locaux. Vous avez probablement utilisé git (ou rake) comme un autre utilisateur (tel que root) dans ce même répertoire, et cela a créé des fichiers que vous ne pouvez plus écraser.

Utilisez simplement chown pour changer la propriété des fichiers en votre utilisateur actuel, par exemple:

chown --recursive $(whoami) .
34
remram

Je l'ai résolu en supprimant .git/COMMIT_EDITMSG. Bizarre, je sais.

61
Zenadix

Si vous travaillez sur le foutu Microsoft Windows, l’erreur peut être due au fait que vous "regardez" les fichiers cachés dans l’Explorateur de fichiers ... c’est tout!

13
Laura Liparulo

une autre solution pour les utilisateurs Windows: si vous utilisez YandexDisk - et votre dossier .git sous synchronisation - YandexDisk définir les attributs masqués et en lecture seule après la synchronisation . les sous-dossiers et les fichiers NON invisibles et non en lecture seule

5
errogaht

chmod 664 le fichier .git/COMMIT_EDITMSG lui donne des permissions d'écriture. 

Dans mon cas, le fichier appartenait à un autre utilisateur appartenant à mon groupe de développement. Le fait de lui donner des autorisations d'écriture l'a résolu. 

Le répertoire .git doit se trouver à la racine de votre référentiel.

Commande (en supposant que vous soyez dans le répertoire .git): 

chmod 664 COMMIT_EDITMSG 
2
Michael Dunn

Cela ne tend pas à être un problème d'autorisations.

Cette situation peut se produire lorsque vous êtes invité à enregistrer un message de validation lors de la fusion (par exemple) et que vous ne sauvegardez pas et ne quittez pas l'éditeur de texte, vous quittez simplement.

Git semble supposer qu'il y a toujours quelqu'un qui édite un message de validation et refuse d'écraser le fichier existant car cela provoquerait un comportement inattendu et la perte d'un autre message de validation.

2
Menno Bieringa

Dans mon cas, la raison en est que l'utilisateur actuel (A) n'est pas propriétaire du fichier COMMIT_EDITMSG (B), remplacez l'utilisateur actuel par B et validez à nouveau . Sudo su B

1
X.Nane

Si vous utilisez TortoiseGit, une boîte de dialogue de validation peut déjà être ouverte

1
bobobobo

Si vous utilisez Windows et que vous rencontrez des problèmes d'autorisations Git, assurez-vous que le dossier .git du référentiel (local) contenus n'est pas marqué comme masqué .

Vous pouvez cependant cacher le répertoire lui-même, mais pas son contenu (fichiers, sous-répertoires).

1
xcuipir

Note rapide:

Si vous avez défini un fichier sur caché/en lecture seule, cela peut se produire. Essayez de définir le dossier entier sur non caché et décochez-le en lecture seule.

0
Aggressor

Exécutez simplement votre commande: chmod 777 -Rf /var/www/html/project-name/.git

0
Sumon Mahmud