117 votes

Erreur Git : Impossible d'ajouter un fichier à .git/logs/refs/remotes/origin/master : Permission refusée

J'ai un problème étrange que je n'arrive pas à résoudre. Voici ce qui s'est passé :

J'avais quelques fichiers log dans un dépôt github que je ne voulais pas y trouver. J'ai trouvé ce script qui supprime complètement les fichiers de l'historique git comme ceci :

    #!/bin/bash
set -o errexit

# Author: David Underhill
# Script to permanently delete files/folders from your git repository.  To use 
# it, cd to your repository's root and then run the script with a list of paths
# you want to delete, e.g., git-delete-history path1 path2

if [ $# -eq 0 ]; then
    exit 0are still
fi

# make sure we're at the root of git repo
if [ ! -d .git ]; then
    echo "Error: must run this script from the root of a git repository"
    exit 1
fi

# remove all paths passed as arguments from the history of the repo
files=$@
git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch $files" HEAD

# remove the temporary history git-filter-branch otherwise leaves behind for a long time
rm -rf .git/refs/original/ && git reflog expire --all &&  git gc --aggressive --prune

Bien entendu, j'ai d'abord effectué une sauvegarde, puis j'ai essayé. Elle semblait fonctionner correctement. J'ai ensuite fait un git push -f et j'ai été accueilli par les messages suivants :

error: Unable to append to .git/logs/refs/remotes/origin/master: Permission denied
error: Cannot update the ref 'refs/remotes/origin/master'.

Tout semble avoir été poussé correctement, car les fichiers semblent avoir disparu du dépôt GitHub, si j'essaie de pousser à nouveau, j'obtiens la même chose :

error: Unable to append to .git/logs/refs/remotes/origin/master: Permission denied
error: Cannot update the ref 'refs/remotes/origin/master'.
Everything up-to-date

EDIT

$ sudo chgrp {user} .git/logs/refs/remotes/origin/master
$ sudo chown {user} .git/logs/refs/remotes/origin/master
$ git push
Everything up-to-date

Gracias.

EDIT

Oh Oh. Problème : je n'ai pas été en mesure d'obtenir des informations sur l'état de l'environnement. J'ai travaillé sur ce projet toute la nuit et je viens d'aller livrer mes modifications :

error: Unable to append to .git/logs/refs/heads/master: Permission denied
fatal: cannot update HEAD ref

C'est ce que je fais :

sudo chown {user} .git/logs/refs/heads/master
sudo chgrp {user} .git/logs/refs/heads/master

J'essaie à nouveau d'effectuer la validation et j'obtiens :

error: Unable to append to .git/logs/HEAD: Permission denied
fatal: cannot update HEAD ref

C'est ce que je fais :

sudo chown {user} .git/logs/HEAD
sudo chgrp {user} .git/logs/HEAD

Puis j'essaie à nouveau d'effectuer l'engagement :

16 files changed, 499 insertions(+), 284 deletions(-)
create mode 100644 logs/DBerrors.xsl
delete mode 100644 logs/emptyPHPerrors.php
create mode 100644 logs/trimXMLerrors.php
rewrite public/codeCore/Classes/php/DatabaseConnection.php (77%)
create mode 100644 public/codeSite/php/init.php
$ git push
Counting objects: 49, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (27/27), done.
Writing objects: 100% (27/27), 7.72 KiB, done.
Total 27 (delta 15), reused 0 (delta 0)
To git@github.com:IAmCorbin/MooKit.git
59da24e..68b6397  master -> master

Hourra ! Je saute sur http://GitHub.com et je vérifie le dépôt, et mon dernier commit n'est nulle part. ::scratch head: : Donc je pousse à nouveau :

Everything up-to-date

Umm... ça n'en a pas l'air. Je n'ai jamais eu ce problème auparavant, est-ce que ça pourrait être un problème avec github ? ou est-ce que j'ai raté quelque chose avec mon projet git ?

EDIT

Je n'ai pas fait attention, j'ai fait simple :

git push origin master

et il a bien poussé.

0voto

Delacrix Morgan Points 205

J'ai essayé de corriger la propriété pour Git, mais cela ne fonctionne toujours pas.

Mais j'ai réussi à résoudre le problème en créant une branche locale avec un nom différent et en la supprimant.

Ensuite, je vérifie à nouveau le même nom de branche et cela fonctionne.

TLDR ;

Je ne peux pas extraire `staging/rc'.

J'ai donc vérifié en utilisant staging au lieu que la télécommande pointe vers `staging/rc'.

Je l'efface et je vérifie à nouveau. Mais cette fois-ci, j'utilise staging/rc comme nom de ma branche locale.

Cela fonctionne et je ne sais pas pourquoi.

0voto

Essayez d'arrêter tous les processus git.

Regardez-les :

ps aux | grep git

Tuer :

kill git

0voto

Alin Ciocan Points 845

J'utilisais un éditeur visuel pour Git ( SourceTree ) sur Fenêtres . En me basant sur les réponses des autres, j'ai compris que je devais toujours l'ouvrir en mode Administrateur et cela a résolu mon problème :

Run SourceTree as administrator

-19voto

Viru Points 157

Veuillez d'abord donner les autorisations de root comme ci-dessous

chmod -R 777 foldername

Ensuite, lancez la commande "commit".

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