git pull échoue “impossible de résoudre” la référence “impossible de mettre à jour locale ref”
À l'aide de git 1.6.4.2, quand je fais un git pull
, j'obtiens cette erreur:
error: unable to resolve reference refs/remotes/origin/LT558-optimize-sql: No such file or directory
From git+ssh://remoteserver/~/misk5
! [new branch] LT558-optimize-sql -> origin/LT558-optimize-sql (unable to update local ref)
error: unable to resolve reference refs/remotes/origin/split-css: No such file or directory
! [new branch] split-css -> origin/split-css (unable to update local ref)
J'ai essayé git remote prune origin
, mais il n'a pas aidé.
Vous devez vous connecter pour publier un commentaire.
Essayez de nettoyer votre dépôt local avec:
homme git-gc(1):
homme git distant(1):
git remote prune origin
commande exécutée sur ma copie de travail locale ou sur le dépôt distant?M'est arrivé aussi. Dans mon cas, la mauvaise réf était un maître, et je n'ai suivantes:
Ce fait git restaurer le fichier de référence. Après que tout a fonctionné comme prévu à nouveau.
.git/refs/tags/
.git
est un dossier en faisantls -la
si non, voir le contenu du fichier.git
fichier pour trouver le réel .git dossier dans lequel les refs sont..git
le contenu du fichier dans mon cas:gitdir: ../.git/modules/my-submodule-name
Ce fait le travail pour moi:
git remote prune origin
Pour moi, il a travaillé pour supprimer les fichiers qui jettent des erreurs à partir du dossier
.git/refs/remotes/origin/
.NULL
s.Essayer:
Exécuter les commandes suivantes:
J'ai eu ce même problème et l'a résolu en allant sur le dossier, il était erroring sur:
Ce fichier a été plein de zéros, je l'ai remplacé par la dernière ref à partir de github.
.git/refs/remotes/origin/master
était tout simplement vide. Résolu le problème en le supprimant.Dans mon cas, le problème a été résolu après que j'ai supprimé toutes les références de supprimer des fichiers dans le répertoire
.git
.Si vous regardez le message, il vous dira quels fichiers vous avez besoin de supprimer (en particulier).
Les fichiers à supprimer s'asseoir sous
.git/refs/remotes
.J'ai juste supprimé tous les fichiers et couru gc pruneau
Après cela, tout fonctionne bien.
J'aimerais juste ajouter comment il peut arriver qu'une référence pauses.
Cause Possible
Sur mon système (Windows 7 64-bit), lorsqu'un BSOD arrive, certains stockés les fichiers de référence (le plus probable actuellement ouvert/écrit lorsque BSOD qui s'est passé) sont remplacées par
NULL
caractères (ASCII 0).Comme d'autres l'ont mentionné, pour la fixer, il suffit juste de supprimer ceux qui invalide les fichiers de référence et re-extraire ou de re-tirer le référentiel.
Exemple
Erreur:
cannot lock ref 'refs/remotes/origin/some/branch': unable to resolve reference 'refs/remotes/origin/some/branch': reference broken
Solution: supprimer le fichier
%repo_root%/.git/refs/remotes/origin/some/branch
error: cannot lock ref 'refs/remotes/origin/master': unable to resolve reference 'refs/remotes/origin/master': reference broken
. En essayant degit pull
après la suppression de la première fichier renvoyéfatal: update_ref failed for ref 'HEAD': cannot lock ref 'HEAD': unable to resolve reference 'refs/heads/master': reference broken
. Après la suppression de la deuxième fichiergit pull origin master
a été un succès.git fetch --prune
fixé cette erreur pour moi:Cela suppose que la direction de la délinquance a été supprimé sur la distance, bien qu'.
--prune
que je peux voir. Aussi proTip: supprimer inutiles invites de mot de passe après le collage d'exemples.De Répondre à ce très court, ce problème vient quand votre local a quelques informations à propos de la distance et de la modification que quelqu'un quelque chose qui fait de distance et de vos modifications unsync.
Je commençais à cette question parce que quelqu'un a supprimé branche distante et encore créé avec le même nom.
Pour traiter de telles questions, faire un pull ou chercher à partir de la télécommande.
ou si vous utilisez l'interface graphique, faire une extraction à partir de la télécommande.
Si
git gc --prune=now
ne marche pas vous aider. (la malchance comme moi)Ce que j'ai fait est de retirer le projet en local, et de nouveau clone de l'ensemble du projet de nouveau.
J'ai pu travailler avec
Essayez ceci:
Branch_Name
, la branche sur laquelle vous êtes actuellement sur.Si vous n'avez qu'un
git pull
, il tire toutes les autres nom de la branche ainsi.Est donc la raison pour laquelle vous faites cela:
Pour moi, j'avais une branche locale nommée
feature/phase2
et la distance de branche a été nomméfeature/phase2/data-model
. Le conflit de noms a été la cause du problème, donc j'ai supprimé mon agence locale (vous pouvez la renommer si elle avait quelque chose que vous besoin de garder)Si cette erreur “impossible de mettre à jour locale ref” est récurrent, même après l'application soit la réponse par Vojtech Vitek ou Michel Krämer vous pouvez vous peut-être un mauvais réf sur vos locaux ET référentiel maître.
Dans ce cas, vous devez appliquer les deux fix sans tirant ou poussant entre les ...
Une solution permanente pour moi a été obtenu après l'application de la fix avant de pousser/tirer.
J'ai eu même problème. - je suivre les étapes suivantes
1)mettez votre branche qui avoir de problème à autre branche
2) supprimer cette branche
3) la caisse de nouveau.
Remarque:- Vous pouvez cachez-vous les modifications non validées et de le remettre à nouveau.
J'ai utilisé
git prune origin
et qui a fait le travail.Explication: Il semble que votre repo distant (sur Github /bitbucket) branches ont été enlevés ,si vos références locales n'ont pas été mis à jour et pointant vers inexistante références.
Afin de résoudre ce problème:
Pour plus de la lecture de la Référence de Github documentation :
J'ai eu le même problème avec le compositeur de mise à jour. Mais pour moi, il a travaillé seulement après que j'ai effacé le compositeur cache et après la suppression du contenu du vendeur dossier:
Eu ce problème lorsque j'essaie de cloner à partir d'un
git bundle
fichier créé, aucune des autres réponses travaillé parce que je ne pouvais pas cloner le repo (doncgit gc
et la suppression/modification de fichiers, il était hors de question).Il y a cependant un autre moyen de résoudre ce problème - le fichier source d'un
.bundle
fichier commençant par:Il suffit de retirer le quatrième ligne avec vim résolu le problème.
J'ai eu ce problème pendant l'utilisation de SourceTree. J'ai essayé de tirer à nouveau et cela a fonctionné. Je pense que j'ai Été fantômes des branches (checkout) trop vite :).
Ma situation est un peu différente de l'affiche est parce que mon dépôt a été relativement coopérative, sans aucune apparente de la corruption.
Face à la même question lorsque le dépôt a été supprimé et créé avec le même nom. Il ne fonctionnait que lorsque je re-définir l'url distante comme ci-dessous;
Vérifier l'url distante:
Maintenant, toutes les commandes doivent travailler comme d'habitude.
Viens de tomber sur le problème aujourd'hui.
Méthode de résolution des problèmes:
Avec SourceTree sur les Serveurs Windows, vous pouvez essayer de l'exécuter en tant qu'Administrateur. Qui résout mon problème de "impossible de mettre à jour locale ref" sur Atlassian Arbre Source 2.1.2.5 sur un Serveur Windows server 2012 R2 dans le domaine.
Si, vous aussi vous pouvez reproduire cette situation, il s'avère que le problème est causé par un problème d'autorisation. Il est préférable de creuser et de trouver la cause de racine - probablement certains fichiers sont détenues par d'autres utilisateurs et tel - sinon, il y a une fâcheuse côté-effet: vous aurez à exécuter SourceTree en tant qu'Administrateur pour le reste de l'éternité.
Écrire un cas spécifique qui pourrait causer ce problème.
Un jour, j'ai poussé une branche nommée "fonction/sous-fonction", tout en ayant la "fonctionnalité" de la branche sur la télécommande.
Que l'opération a bien fonctionné sans erreur de mon côté, mais quand mon co-travailleurs, les cheveux et/ou tiré de toute branche, ils avaient tous exactement le même message d'erreur
unable to update local ref
,cannot lock ref 'refs/remotes/origin/feature/subfeature
.Cela a été résolu par la suppression de
feature
direction sur la télécommande (git push --delete origin feature
), puis en exécutantgit remote prune origin
sur mon co-travailleurs pensions, ce qui a généré des messages, y compris* [pruned] origin/feature
.Donc, je suppose que
git fetch
essayait de créersubfeature
ref dansfeature
dossier sur git en interne(.git/...), mais de créer des dossier a échoué car il n'étaitfeature
réf déjà.Nous avons eu ce problème quand un développeur sur Mac créé une branche avec un plus grand que ">" symbole dans le nom de la branche.
Qui a provoqué des problèmes de TeamCity, et sur local des ordinateurs basés sur Windows exécutant SourceTree. BitBucket le laisser passer sans aucun problème.
Pour résoudre l'utilisateur a supprimé la branche et recréée. Ce qui était agréable et facile.
Eu le même msg mais avec un répertoire, a obtenu un échec msg sur pull.
git --enclin ne m'aide pas non plus.
S'avère qu'il y a un fichier avec le même nom qu'un répertoire créé à distance.
Devais aller .git\logs\ref\télécommandes\ ' origine et d'effacer les paramètres régionaux de fichier, puis tirez à nouveau, tout bon.