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?
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.
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.)
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.
J'ai rencontré ce problème en faisant un git pull
.
J'ai essayé git gc
et cela a résolu mon problème.
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.
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.
Cela pourrait être utile pour quelqu'un. Si tout ce qui précède n'a pas fonctionné pour vous, procédez comme suit:
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.
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.
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
J'ai essayé git gc
et cela a résolu mon problème.
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
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.
J'ai ce problème sous Windows. J'ai fermé mon IDE (Android Studio) et sélectionné OUI dans git Shell. Ça a marché.
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.
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.
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.)
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.
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.
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.
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.
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.
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.
J'ai pu résoudre ce problème en ouvrant Powershell en tant qu'administrateur et à partir de là git checkout <branch_name>
Aucune des réponses ci-dessus ne semblant fonctionner, l'exécution de git fetch -p
a été efficace.
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é.
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.
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
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
a travaillé pour moi
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"
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
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.