391 votes

git rebase: "erreur: impossible de stat 'fichier': autorisation refusée"

Je suis à l'aide de git, et fait une petite commettre suivie par un grand. J'ai décidé d'utiliser git rebase à la courge, les deux s'engage avant de le pousser. (Je n'ai jamais fait cela avant.)

J'ai donc fait:

git rebase -i HEAD~2

Cela m'a donné mon éditeur, où j'ai choisi de retirer le plus tôt s'engager et à la courge la plus tard. Quand j'ai enregistré, git a dit:

erreur: cannot stat 'nom de fichier': Permission denied

Pourrait ne pas s'appliquer sha1 pour plus tard, s'engager... la première ligne de texte qui s'engagent

Maintenant:

  • Ne jamais commettre s'affiche lorsque je n' git log.
  • git status me dit que je suis "Pas actuellement sur n'importe quelle branche."
  • Un fichier est répertorié en tant que modifiée et dans l'index, et les deux fichiers sont répertoriés comme non chaînée. Mon premier commit avait qu'un seul fichier (je crois), et mon deuxième commettre avait une bonne douzaine.

Ce qui s'est passé!? Comment puis-je résoudre ce problème?

712voto

Cameron Wright Points 711

Essayez de fermer tous les programmes dont le dossier est ouvert, tels que les éditeurs, les fenêtres de l’explorateur, les invites de commande et les programmes FTP. Cela corrige toujours le problème pour moi sous Windows.

311voto

ManJan Points 231

Il suffit de fermer VISUAL STUDIO. Cela peut fonctionner

215voto

Charles Bailey Points 244082

Je n'ai jamais vu cette erreur sur Windows et ce qu'il semble dire, c'est que quelque chose de bloqué git à partir de la modification d'un fichier au moment où il a essayé d'appliquer un patch.

Windows a tendance à donner un processus exclusif de l'accès aux fichiers quand il ne devrait pas vraiment être nécessaire, dans le passé, les antivirus ont été une source de suspicion, mais je n'ai jamais prouvé de façon concluante.

Probablement la meilleure chose à faire est d'abandonner et essayer de nouveau, en espérant que ça n'arrive pas, la prochaine fois.

git rebase --abort

Vous pouvez essayer de l'utiliser git apply et de la connaissance de ce commit git était en train d'essayer de le faire avant de faire un git rebase --continue mais en toute honnêteté, je ne recommanderais pas cela. La plupart du temps, je les ai vu cet essayé il y a eu un mieux que evens chance que quelque chose est perdue accidentellement ou foiré.

24voto

Mike Ruhlin Points 2192

Quand je vois cela sur ma machine, c'est pire qu'un "certain processus a ouvert le fichier". La propriété réelle du fichier est monté au point où je (en tant qu'administrateur) peut accéder uniquement après le redémarrage.

Le plus proche que je peux dire, IIS est une partie du problème. Si je switch entre les deux grandes branches qui nécessitent beaucoup de fichiers à modifier, git va supprimer un fichier ou un répertoire (généralement Dll) alors que IIS est en train de faire quelque chose ou d'une autre. À ce stade, le processus IIS remplace automatiquement le fichier sur le disque avec une version qui est verrouillé et semble être la propriété de personne.

L'arrêt de IIS à ce point de ne pas le faire. Meilleure que j'ai trouvé à faire est de redémarrer, et n'oubliez pas d'arrêter IIS avant de changer dans les principales branches dans l'avenir.

Je sais que ce n'est pas vraiment répondre à la question, mais pourrait être utile à d'autres.

18voto

romanlv Points 382

Sous Windows, il peut s’agir d’un processus TortoiseGIT qui bloque ces fichiers. Ouvrez le gestionnaire de tâches et terminez le processus TGitCache.exe .

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