web-dev-qa-db-fra.com

Dissocier le fichier a échoué. Devrais-je essayer à nouveau?

Quelque chose ne va pas avec l'un des fichiers de mon référentiel git local. Quand j'essaye de changer de branche, on dit:

Unlink of file 'templates/media/container.html' failed. Should I try again? (y/n)

Qu'est-ce que cela pourrait signifier?

411
Pol

Cela pourrait signifier qu'un autre programme utilise le fichier, ce qui empêche git de "déplacer" le fichier dans ou hors du répertoire de travail lorsque vous essayez de changer de branche. 

Cela s'est produit sous Windows Vista où Eclipse est le programme "utilisant" le fichier. Le fichier peut ne pas être réellement ouvert dans Eclipse, mais peut avoir été ouvert par un processus exécuté par Eclipse. 

Dans ce cas, essayez de fermer le fichier dans toutes les applications qui l'auraient utilisé. Si cela ne fonctionne pas, quittez complètement les applications susceptibles d'avoir ouvert le fichier. 

545
Melissa

J'ai eu ce problème et résolu par la commande: git gc La commande ci-dessus supprime les fichiers temporaires et inutiles. (Éboueur.)

227
khilo

cette solution de ici a fonctionné pour moi:

Ceci est une réponse spécifique de Windows, donc je suis conscient que cela ne vous concerne pas ... je l'inclue simplement pour le bénéfice des futurs chercheurs.

Dans mon cas, c'était parce que j'exécutais Git à partir d'une ligne de commande non élevée. "Exécuter en tant qu'administrateur" l'a corrigé pour moi.

64
sepehr

J'ai rencontré ce problème en faisant un git pull.

J'ai essayé git gc et cela a résolu mon problème.

30
Rahul Chandran

Dans mon cas, aucun processus n’atteint le fichier ou le répertoire. Cela peut arriver si le chemin est très long, à cause d'une restriction du système d'exploitation (Windows). Essayez d'activer l'indicateur de support longpath dans la configuration globale de git comme indiqué ci-dessous:

git config --global core.longpaths true

ou essayez de définir l'indicateur de réponse oui/non s'il n'est pas conflictuel pour vous

set GIT_ASK_YESNO=false

Si le chemin est trop long, je n'ai pas trouvé de solution satisfaisante.

14
andhdo

Dans mon cas (Win8.1, TortoiseGit en cours d'exécution), c'était le processus appelé «cache d'état TortoiseSVN» qui bloquait le fichier.

Le tuer m'a permis de lancer "git gc" sans autre problème . Le processus ci-dessus est déclenché par TortoiseGit, il n'est donc pas nécessaire de le redémarrer manuellement.

7
nickD

Cela pourrait être utile pour quelqu'un. Si tout ce qui précède n'a pas fonctionné pour vous, procédez comme suit:

  1. Fermez votre IDE (le mien était Eclipse, ne sachant pas si cela s'applique à Intellij et à d’autres) ou toute autre application pouvant utiliser git.

  2. Ouvrez git à partir de la ligne de commande (dans mon cas, j'avais git bash) et exécutez git gc comme mentionné par d'autres.

Cela a fait la magie pour moi. 

7
papigee

Comme j'utilise gitkraken et l'invite de commande, j'ai rencontré le même problème. Et puis, je lance la commande git gc qui a résolu mon problème. Donc, je suis heureux et je veux partager certains des points qui pourraient être utiles.

Qu'est-ce que git gc fera?

git gc supprimant les objets inaccessibles pouvant avoir été créés à partir d'invocations antérieures de git add.

Quand exécuter git gc?

À partir de doc , les utilisateurs sont invités à exécuter cette tâche régulièrement dans chaque référentiel afin de conserver une utilisation optimale de l'espace disque et des performances opérationnelles optimales.

Comment le rendre auto-configurable?

Certaines commandes git peuvent automatiquement lancer git gc; voir le drapeau --auto ci-dessous pour plus de détails. Si vous savez ce que vous faites et que vous souhaitez simplement désactiver ce comportement de manière permanente, sans autre considération, il suffit de le faire.

git config --global gc.auto 0
6
Ramesh Papaganti

J'ai essayé git gc et cela a résolu mon problème.

5
Mukesh Yadav

J'ai eu ce problème avec les fichiers .tmp dans le dossier /.git/objects/pack. Je pense que quelque chose a échoué pendant un push ou un pull. J'ai donc supprimé ces fichiers temporaires et remis le HEAD à mon dernier commit. Je ne sais pas si cela est conseillé, mais cela a fonctionné pour moi. De plus, git count-objects -v m'a donné une liste des fichiers .tmp qui n'appartenaient pas au dossier du pack.

Ou pour supprimer les messages y/n dans windows git open cmd.exe et exécuter:

SETX GIT_ASK_YESNO false

vu ici: https://Twitter.com/petercamfield/status/494805475733807104

4
blueberries

Sous Windows 8: J'ai lancé git gc et il a été dit que git gc était déjà lancé, j’ai lancé git gc - force et le ramasse-miettes s’est exécuté.

Je pourrais alors changer de branche et fusionner sans problème, essayez git gc --force.

Peut-être que le processus gc ne s’est pas arrêté avec élégance pour une raison ou une autre.

4
Mark Howard

J'ai ce problème sous Windows. J'ai fermé mon IDE (Android Studio) et sélectionné OUI dans git Shell. Ça a marché.

4
vovahost

J'ai fait face au même problème en faisant "git pull". J'ai essayé la commande manuelle de ménage Git 'git gc' et cela a résolu mon problème.

4
doitright

J'ai eu ce genre de problème sur Windows 7 et il s'est avéré que c'était dû à un processus orphelin de git.exe.

Pour le résoudre, ouvrez le Gestionnaire des tâches et supprimez tous les processus git.exe.

Les commandes git étant de courte durée, vous ne devriez normalement jamais voir aucun git.exe dans le Gestionnaire des tâches. Quand ils sont là, cela signifie généralement que quelque chose ne va pas et vous devriez arrêter ces processus.

3
jakub.g

Après avoir essayé diverses solutions, finalement, git clean -f m'a aidé.

EDIT: J'ai à nouveau rencontré le problème plusieurs fois - la fermeture de tous les processus dépendant de git semble aider (comme gitbash, Eclipse IDE, etc.)

2
FazoM

J'ai rencontré ce problème avec git Bash et Eclipse EGit en même temps .. Solution. De même, ne pas nuire à l'exécution de git gc comme indiqué par @khilo.

1
jhyry

J'ai rencontré ce problème sous Windows. Vous pouvez exécuter git bash en tant qu'administrateur, puis exécuter les commandes souhaitées, ce qui a résolu le problème pour moi.

1
Pablo Fallas

Comme indiqué ci-dessus, quelque chose d'autre contient les fichiers. La chose est que le programme ne semble pas suspect pour nous. J'essayais de tirer un git depuis la console tout en faisant ouvrir GitKraken La fermeture de GitKraken a résolu le problème.

1
100r

J'ai essayé chaque astuce sur cette page et rien n'a aidé. Je faisais un git fetch et un git reset --hard Origin/development m'a donné l'erreur Unkink. Je n'ai pas pu réinitialiser le dernier commit.

Ce qui a aidé a été de vérifier une autre branche puis de vérifier la branche précédente. Très étrange mais cela a résolu le problème.

1
T3rm1

Cela peut être une fenêtre séparée de gitk en cours d'exécution pour voir l'historique de git.

Fermez cette fenêtre pour résoudre ce problème.

1
weinerk

Si vous développez une application Web, une raison courante consiste à oublier d’arrêter le serveur. Par exemple, il peut s'agir d'un simple processus Node.js ou de votre processus IIS sous Windows exécutant un processus d'arrière-plan plus discret.

1
alex3683

J'ai pu résoudre ce problème en ouvrant Powershell en tant qu'administrateur et à partir de là git checkout <branch_name>

1
Bar Horing

Aucune des réponses ci-dessus ne semblant fonctionner, l'exécution de git fetch -p a été efficace.

https://git-scm.com/docs/git-fetch

1
Jamie Wade

Après la commande d'exécution

git rm -rf foo.bar

Je vois une erreur

Unlink of file 'foo.bar' failed. Should I try again? (y/n)

Parce que un autre programme utilise ce fichier . Par exemple, lorsque je lance une application Web Java dans un modèle de débogage ou une application Web sur un serveur, je ne peux pas supprimer le fichier journal. Désactiver le serveur d'application (ou le processus de débogage), réessayer

git rm -rf foo.bar

Je vois que le fichier a été supprimé.

0
foobarfuu

Si la fermeture de votre IDE et l'exécution des diverses commandes git répertoriées ici ne vous aideront pas, essayez de supprimer manuellement tous les processus Java en cours d'exécution. Il me restait probablement un processus Java d'Eclipse qui laissait en quelque sorte un fichier de configuration ouvert.

0
Marc.S

dans mon cas, il y avait une fenêtre de copie ou de remplacement pour ce fichier particulier ouverte et par conséquent l'erreur de dissociation. je l'ai fermé et il n'y a pas d'erreur de liaison

0
schin chan

Sous Windows, cette erreur s'est produite sur un git clone d'un référentiel (relativement volumineux). Closed SmartGit et mon logiciel de sauvegarde (CrashPlan) a été mis en pause, puis il a fonctionné. Je ne sais pas lequel des 2 a fait le tour, mais si vous courez non plus, cela pourrait le faire pour vous aussi.

Faire

git clean -dxf

a travaillé pour moi

0
Aalok

J'ai eu cette même erreur et la fermeture de l'application qui avait le fichier ouvert l'a résolu. J'ai pu revenir en arrière et appuyer sur "Y"

0
Paul McDaniel

Si vous utilisez Docker et exécutez Windows 10, vous souhaiterez peut-être arrêter le ou les conteneurs sur lesquels le fichier peut être exécuté. Pour afficher les statuts de vos conteneurs, exécutez

docker ps -a

Pour les arrêter, lancez simplement

docker stop <container name or container id>

Cela a fonctionné pour moi car je cours mes fichiers locaux en utilisant un fichier .sh

0
Razor's Edge

J'avais le même problème lorsque je tirais un git et, comme indiqué ci-dessus, c'était à cause d'un programme qui tenait ces fichiers et ne permettait pas un git. La fermeture du programme a aidé. En général, le IDE (comme Eclipse) à partir duquel les fichiers sont archivés le conservera en arrière-plan. Fermer le même et relancer git pull a résolu le problème pour moi.

0
Somesh Rao