Je suis conscient qu'il existe des problèmes similaires à propos de git liés à l'avertissement `` Impossible de dissocier '', mais je n'ai pas pu les utiliser.
La principale différence est que cela s'est produit lorsque je n'ai jamais traité de sous-modules (je ne les ai jamais traités auparavant). J'ai créé une branche appelée 'mise à niveau', supprimé mes anciens fichiers de framework et copié dans les nouveaux. J'ai utilisé git add -A, puis j'ai tout validé. Lorsque j'ai essayé de vérifier la branche du tronc, elle a répondu avec les erreurs suivantes:
warning: unable to unlink requirements/views/sk/index.php: Permission denied
warning: unable to unlink requirements/views/sv/index.php: Permission denied
warning: unable to unlink requirements/views/zh/index.php: Permission denied
warning: unable to unlink requirements/views/zh_cn/index.php: Permission denied
warning: unable to unlink requirements/views/zh_tw/index.php: Permission denied
...etc. Il y en a des centaines.
Au début, je pensais qu'il s'agissait simplement d'un problème d'autorisations, et j'ai donc ajouté des autorisations d'écriture de groupe à l'ensemble du répertoire des exigences de manière récursive, mais il n'y a pas eu de changement.
Edit: Comme suggéré dans une réponse ci-dessous, j'ai essayé de faire la même chose mais avec tout le reste fermé. Je n'ai pas eu plus de chance qu'avant.
Ce problème est particulièrement débilitant car je ne peux pas passer au tronc pour revenir à un développement normal.
sudo chown -R username directory
Réponses:
Je vois généralement ce genre d'erreur quand un processus ne libère pas le handle de ces fichiers.
Assurez-vous que rien n'est en cours d'exécution, puis réessayez.
Remarque: cela peut également être lié à la façon dont Git a été installé (sous Windows, UAC peut générer des problèmes si msysgit est installé dans
C:\Program
ouC:\Program Files
, voir " msysgit - sh.exe - fork: Permission refusée - Vista 64 bits " et commenter 2 sur numéro 437 )Remarque: comme illustré ci - dessous , une autre cause courante du problème est un problème de droits sur le répertoire (mauvais propriétaire), pas nécessairement sur le fichier qui ne peut pas être dissocié.
la source
git checkout -f master
Lors de ma première rencontre avec cette erreur, mon utilisateur avait le droit "d'écrire" dans le fichier mais pas dans le répertoire contenant. Vérifiez les autorisations du répertoire contenant le fichier.
la source
«Dissocier» signifie essentiellement «supprimer le fichier» dans ce cas.
Cette erreur n'est pas causée par git lui-même. Vous devriez avoir des erreurs similaires en supprimant ces fichiers manuellement, dans une ligne de commande ou un explorateur de fichiers.
la source
Vous ne disposez pas de l'autorisation d'accès, peut-être parce que vous n'êtes pas le propriétaire.
Corrigez en changeant le propriétaire pour vous-même:
la source
J'avais le problème avec un fichier default-settings.php dans drupal 7. Dans ce cas, je n'ai pas pu le supprimer ou le rétablir comme @rtconner l'a dit. Je n'avais pas d'application ou quoi que ce soit utilisant ce fichier, et cela a fini par être une erreur d'autorisations.
J'ai ajouté
chmod 777 *
au dossier et j'ai pu le rétablir sans problème.la source
777
aucun dossier. Cela a résolu mon problème, mais je l'ai rapidement rétabli par défaut après sa résolution. Merci!Vous pouvez modifier les autorisations d'écriture pour le faire.
Cette commande donnera des
'w'
autorisations à tous les dossiers du répertoire courant.la source
J'ai rencontré ce problème à chaque fois que j'exécutais "git repack" ou "git gc" sur mes machines OS X, même en exécutant git avec des privilèges d'administrateur, et je l'ai finalement résolu après être tombé sur cette page: http://hints.macworld.com /comment.php?mode=view&cid=1734
Le correctif consiste à ouvrir un terminal, à accéder à votre dépôt git, à installer un cd dans le dossier .git, puis à faire:
Si tel était le problème, après cela, vos commandes git fonctionneront normalement.
la source
Cela peut également se produire lorsque:
Vous avez exécuté un processus dans un conteneur Docker et:
Certains fichiers ont été générés par ce processus, et:
La destination des fichiers est montée en tant que volume sur l'hôte Docker, et:
Vous exécutez
git
sur l'hôte Docker.Si tel est le cas, mettez en scène les fichiers que vous souhaitez valider et exécutez:
Les fichiers qui répondent aux critères ci-dessus seront précédés de:
Ils appartiennent à
root
et ne sont pas inscriptibles, ce qui n'est pas bon. Pour réparer cette course:Une solution plus propre serait probablement d'utiliser l'
--user
option, voir ceci pour Docker et ceci pour Docker compose .la source
Pour ceux qui utilisent Intellij , comme @rtconner l'a dit, ce problème n'est pas causé par git. Puisque votre IDE est verrouillé, un ou plusieurs fichiers, git ne peut pas le dissocier. Donc, vous devez fermer votre IDE, puis essayer de le fusionner (ou ce que vous voulez) via la ligne de commande.
la source
Dans mon cas, c'était un caractère ":" dans un nom de dossier empêchant le dépôt git de récupérer sous Windows.
la source
sur le terminal sur mac je fais juste ça
puis
la source
J'ai eu cette erreur dans une machine virtuelle (exécutant Ubuntu), quand j'ai essayé de le faire
git reset --hard
.Le correctif consistait simplement à s'exécuter à
git reset --hard
partir de la machine hôte OS X à la place.la source
Aucune des autres suggestions n'a fonctionné pour moi, mais cela a fonctionné:
sudo git reflog expire --expire=now --all && sudo git gc --prune=now --aggressive
la source
Dans mon cas, mon répertoire Windows se trouve sous le dossier Dropbox. Ce n'est pas un problème spécifique à Git. Lorsqu'un fichier (dans ce cas, le fichier de verrouillage) vient d'être créé, Dropbox prend une seconde de plus pour effectuer la synchronisation. Pendant ce temps, le fichier est utilisé par Dropbox et tout programme tiers (dans ce cas, Git) ne peut pas supprimer le fichier.
Ma solution est de quitter Dropbox et donc d'éviter la magie des coulisses de la synchronisation des fichiers de Dropbox.
la source
J'ai rencontré cette erreur et elle est causée par un "propriétaire / groupe" incorrect du fichier / dossier . Vous devez demander de l'aide à l'administrateur de votre serveur pour changer le "propriétaire / groupe" de ce fichier / dossier et réessayer en utilisant "git pull". Ou si vous êtes un sudoer, sélectionnez simplement sudo "votre nom de propriétaire / nom de votre groupe" et essayez à nouveau d'extraire votre dépôt. Essayez-le, cela fonctionne à 100% pour moi!
la source
Assurez-vous que les processus ou threads associés ne sont pas en cours d'exécution et exécutez la tâche de fin ou forcez la fermeture si nécessaire.
Assurez-vous de modifier l'autorisation de propriété.
la source
En général, si cela se produit sous Windows et que vous utilisez tortoisegit , il s'agit du cache d'état de tortoisegit . Tuez ce processus et il sera libéré.
la source
git status
partir de la ligne de commande à la place.Je devais juste changer d'utilisateur d'ubuntu pour mon nom d'utilisateur réel sous lequel j'avais d'abord fait des choses. Cela a réglé le problème.
la source
Résolu pour moi en configurant mon client git (GitExtensions) pour qu'il s'exécute toujours en mode administrateur.
la source
J'ai eu ce problème lors de l'utilisation de
IntelliJ
(14.1.3 Ultimate), je voulais annuler les modifications dans certains fichiers.Résolu en fermant
Git Bash
ouvert dans une autre fenêtre - un autre essai de retour aIntelliJ
fonctionné.la source
J'ai rencontré cette erreur et je pense que le problème était que j'avais `` exécuté en tant qu'administrateur '' lorsque j'ai démarré Eclipse et créé les fichiers, ils appartenaient donc à l'administrateur (remarqué en exécutant `` ls -la '' sur le dossier). Quand j'ai essayé plus tard de cacher les fichiers, cela ne m'a pas laissé («impossible de dissocier les fichiers» et tout ça). Faire un chmod sur les fichiers était la solution pour moi.
la source
git gc a fonctionné pour moi (dans un nouvel onglet). J'obtenais cela à chaque rebase. Merci http://www.saintsatplay.com/blog/2016/02/dealing-with-git-unlink-file-errors#.W4WWNZMzZZJ
la source
Tout ce que vous avez à faire est de fournir des autorisations, exécutez la commande ci-dessous à partir de la racine de votre projet:
la source
J'ai eu le même problème, j'ai essayé quelques alternatives comme d'autres l'ont suggéré.
Mais enfin, donner l'autorisation correcte au dossier .git résout les problèmes.
la source
Dans mon cas, le problème d'autorisation résolu en définissant en
www-data
tant que propriétaire:la source
Je pense qu'il s'agit de votre autorisation de fichier:
la source