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?
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) .
Je l'ai résolu en supprimant .git/COMMIT_EDITMSG
. Bizarre, je sais.
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!
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
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
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.
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
Si vous utilisez TortoiseGit, une boîte de dialogue de validation peut déjà être ouverte
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).
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.
Exécutez simplement votre commande: chmod 777 -Rf /var/www/html/project-name/.git