Git push error: impossible de dissocier l'ancien (Autorisation refusée)

Dans le serveur distant, j'ai mis en place un hook post-receive afin de faire une extraction git de mon référentiel:

#!/bin/sh
GIT_WORK_TREE=/var/www/<website> git checkout -f

Mais quand je fais un push de ma machine locale vers le référentiel git du serveur, j'obtiens les messages d'erreur suivants:

remote: error: unable to unlink old '<file>' (Permission denied)

Cela apparaît plusieurs fois, un message d'erreur pour presque tous les fichiers.

Cependant, j'ai un README.fichier txt que je suis capable de changer en utilisant git, voici ses autorisations:

-rw-r--r--  1 <serverusername>  <serverusername>  2939 Aug  2 10:58 README.txt

, Mais d'autres fichiers avec exactement le même propriétaire et mêmes autorisations, donnez-moi cette erreur.

Dans un autre référentiel local pour un autre site web, j'ai les fichiers avec mon nom d'utilisateur local en tant que propriétaire, et quand je pousse vers le serveur distant, il respecte le propriétaire du serveur distant des fichiers et fonctionne comme un charme.

Évidemment, il semble une erreur liée aux autorisations, mais je ne peux pas trouver un moyen de le réparer, des suggestions?

143
demandé sur pocesar 2012-08-02 13:12:51

11 réponses

Lorsque vous avez à dissocier fichier, vous devez disposer d'une autorisation " w " pour le répertoire dans lequel le fichier est, pas pour le fichier...

249
répondu Jan Marek 2012-08-02 09:14:46
sudo chmod -R ug+w .;

Cette commande corrigerait le problème. Il donne des autorisations d'écriture au dossier.

33
répondu Rajendra kumar Vankadari 2018-02-04 21:23:01

Si vous utilisez un IDE, le problème est que le fichier a été utilisé par un processus. Comme votre tomcat pourrait utiliser le fichier. Essayez d'identifier ce processus particulier et fermez-le. Cela devrait résoudre votre problème.

31
répondu Rama Krishna Gollapudi 2015-10-16 21:44:18

J'ai eu le même problème et aucune des solutions ci-dessus a fonctionné pour moi. J'ai supprimé la délinquance dossier. Alors:

git reset --hard

Supprimé tous les fichiers persistants pour nettoyer le statut git, puis fait:

git pull

Ça a finalement marché.

REMARQUE: Si le dossier était, par exemple, un dossier public avec des fichiers de construction, n'oubliez pas de reconstruire les fichiers

5
répondu wcyn 2018-01-17 09:09:40

FWIW-j'ai eu un problème similaire et je ne suis pas sûr si cela l'a atténué (au-delà du mod d'autorisation): fermeture D'Eclipse qui utilisait la branche avec ce problème.

4
répondu cellepo 2014-11-15 21:35:59

C'est une vieille question, mais cela peut aider les utilisateurs de Mac.

Si vous copiez des fichiers de Time Machine manuellement, au lieu de les restaurer via Time Machine, il ajoutera ACLs à tout, ce qui peut gâcher vos autorisations.

Par exemple, la section de Cet article qui dit "comment réparer les autorisations de fichiers Mac OS X" montre que "tout le monde" a des autorisations personnalisées, ce qui gâche tout:

Mauvaises autorisations, de http://dreamlight.com/how-to-fix-mac-os-x-file-permissions

Vous devez supprimer les ACL à partir de ces répertoires/fichiers. cette réponse Super Utilisateur y va, Mais voici la commande:

sudo chmod -RN .

Ensuite, vous pouvez vous assurer que vos répertoires et fichiers ont les autorisations appropriées. J'utilise 750 pour les répertoires et les 644 pour les fichiers.

3
répondu kylesimmonds 2017-03-20 10:18:27

Je reçois cette erreur, et d'autres erreurs git étranges, quand j'ai un serveur en cours d'exécution (dans Intellij). Arrêter le serveur et réessayer la commande git le corrige fréquemment pour moi.

2
répondu Phil Carter 2017-07-28 12:58:10
git reset --hard

Travaillé pour moi

2
répondu kreker 2017-10-24 19:40:57

Certains fichiers sont protégés en écriture que même git ne peut pas l'écrire. Modifiez l'autorisation de dossier pour autoriser l'écriture, par exemple sudo chmod 775 foldername

Puis git tire à nouveau

1
répondu Carmela 2018-03-09 04:47:33

Rappelez-vous également de vérifier l'Autorisation du répertoire racine lui-même!

Vous pouvez trouver:

drwxr-xr-x  9 not-you www-data  4096 Aug  8 16:36 ./
-rw-r--r--  1     you www-data  3012 Aug  8 16:36 README.txt
-rw-r--r--  1     you www-data  3012 Aug  8 16:36 UPDATE.txt

Et l'erreur' permission denied ' apparaîtra.

0
répondu cadavre 2016-08-08 14:41:27

Je pense que le problème peut être avec la propriété du dossier, alors définissez-le sur la propriété actuelle de l'utilisateur

Sudo chown - R your_login_name/chemin/vers / dossier

Vous pouvez trouver la solution ici

0
répondu Soumitra Sarkar 2017-10-29 17:56:06