En utilisant git 1.6.4.2, lorsque j'ai essayé 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 ça n'a pas aidé.
Réponses:
Essayez de nettoyer votre référentiel local avec:
homme git-gc (1):
man git-remote (1):
la source
git remote prune origin
commande s'exécutera-t-elle sur ma copie de travail locale ou sur le référentiel distant?Cela m'est arrivé aussi. Dans mon cas, la mauvaise référence était maître, et j'ai fait ce qui suit:
Cela a permis à git de restaurer le fichier ref. Après cela, tout s'est à nouveau déroulé comme prévu.
la source
.git
s'agit d'un dossier en faisantls -la
sinon, consultez le contenu du.git
fichier pour trouver le dossier .git dans lequel se trouvent les références..git
contenu du fichier dans mon cas:gitdir: ../.git/modules/my-submodule-name
Cela a fait le travail pour moi:
la source
git remote prune origin
Pour moi, cela a fonctionné pour supprimer les fichiers qui génèrent des erreurs du dossier
.git/refs/remotes/origin/
.la source
NULL
s.Essayez-le:
la source
Exécutez les commandes suivantes:
la source
Je voudrais juste ajouter comment il peut arriver qu'une référence se casse.
Cause racine possible
Sur mon système (Windows 7 64 bits), lorsqu'un BSOD se produit , certains des fichiers de référence stockés (très probablement actuellement ouverts / en cours d'écriture lorsque BSOD s'est produit) sont remplacés par des
NULL
caractères (ASCII 0).Comme d'autres l'ont mentionné, pour le corriger, il suffit de supprimer ces fichiers de référence invalides et de récupérer ou de ré-extraire 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: supprimez le fichier
%repo_root%/.git/refs/remotes/origin/some/branch
la source
error: cannot lock ref 'refs/remotes/origin/master': unable to resolve reference 'refs/remotes/origin/master': reference broken
. Essayer degit pull
supprimer le premier 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 du deuxième fichiergit pull origin master
a réussi.J'ai eu ce même problème et l'ai résolu en allant dans le fichier sur lequel il faisait une erreur:
Ce fichier était plein de null, je l'ai remplacé par la dernière référence de github.
la source
.git/refs/remotes/origin/master
était juste vide. Résolu le problème en le supprimant.Dans mon cas, le problème a été résolu après avoir supprimé tous les fichiers de référence de suppression sous le répertoire
.git
.Si vous regardez le message, il vous dira quels fichiers vous devez supprimer (spécifiquement).
Les fichiers à supprimer se trouvent sous
.git/refs/remotes
.Je viens de supprimer tous les fichiers et d'exécuter gc prune
Après cela, tout fonctionne très bien.
la source
Explication : Il semble que vos branches de dépôt à distance (dans Github / bitbucket) aient été supprimées, bien que vos références locales n'aient pas été mises à jour et pointent vers des références inexistantes.
Afin de résoudre ce problème:
Pour une lecture supplémentaire - Référence de la documentation Github :
la source
git fetch --prune
corrigé cette erreur pour moi:Cela suppose cependant que la branche incriminée a été supprimée sur la télécommande.
la source
--prune
que je peux voir. Aussi proTip: supprimez les invites de mot de passe inutiles après avoir collé des exemples.Si cette erreur «impossible de mettre à jour la référence locale» se reproduit, même après avoir appliqué la réponse de Vojtech Vitek ou de Michel Krämer, vous pouvez avoir une mauvaise référence sur votre référentiel local ET maître.
Dans ce cas, vous devez appliquer les deux fixations sans tirer ni pousser entre les deux ...
Une résolution permanente pour moi n'a été obtenue qu'après avoir appliqué les deux correctifs avant de pousser / tirer.
la source
Pour répondre à cette question très brièvement, ce problème survient lorsque votre section locale a des informations sur la télécommande et que quelqu'un change quelque chose qui rend la télécommande et vos modifications non synchronisées.
J'obtenais ce problème parce que quelqu'un a supprimé la branche distante et a de nouveau créé avec le même nom.
Pour résoudre ces problèmes, effectuez une extraction ou une récupération à distance.
ou si vous utilisez une interface graphique, effectuez une récupération à distance.
la source
J'ai pu travailler avec
la source
Essaye ça:
Branch_Name
, la branche sur laquelle vous vous trouvez actuellement.Si vous ne faites qu'un
git pull
, il extrait également tous les autres noms de branche créés.C'est la raison pour laquelle vous obtenez ceci:
la source
Pour moi, j'avais une branche locale nommée
feature/phase2
et la branche distante a été nomméefeature/phase2/data-model
. Le conflit de nommage a été la cause du problème, j'ai donc supprimé ma branche locale (vous pouvez la renommer si elle contient tout ce que vous devez conserver)la source
Si
git gc --prune=now
ça ne vous aide pas. (pas de chance comme moi)Ce que j'ai fait, c'est de supprimer le projet en local et de recloner à nouveau l'ensemble du projet.
la source
J'utilise Tower et pour une raison quelconque, mon nom de dossier était
.git/refs/remotes/origin/Github
. Le changer en minuscule a.git/refs/remotes/origin/github
résolu le problème.la source
J'ai eu le même problème. je suis les étapes suivantes
1) Basculez votre succursale ayant un problème vers une autre succursale
2) supprimer cette branche
3) commander à nouveau.
Remarque: - Vous pouvez cacher vos modifications non validées et les remettre à nouveau.
la source
J'ai utilisé
git prune origin
et cela a fait le travail.la source
J'ai eu le même problème avec la mise à jour du compositeur. Mais pour moi, cela n'a fonctionné qu'après avoir vidé le cache du composeur et après avoir supprimé le contenu du dossier du fournisseur:
la source
Vous avez ce problème lorsque vous essayez de cloner à partir d'un
git bundle
fichier créé, aucune des autres réponses n'a fonctionné parce que je ne pouvais pas cloner le dépôt (ilgit gc
était donc hors de question de supprimer / modifier des fichiers).Il y avait cependant une autre façon de résoudre ce problème - le fichier source d'un
.bundle
fichier commençait par:La simple suppression de la quatrième ligne avec vim a résolu le problème.
la source
J'ai eu ce problème lors de l'utilisation de SourceTree. J'ai essayé de tirer à nouveau et cela a fonctionné. Je pense que je faisais de la sorcellerie (paiement) trop vite :).
Ma situation est un peu différente de celle de l'affiche car mon référentiel a été relativement coopératif, sans aucune corruption apparente.
la source
la source
Face au même problème lorsque le référentiel a été supprimé et créé avec le même nom. Cela n'a fonctionné que lorsque j'ai réinitialisé l'URL à distance comme ci-dessous;
Vérifiez l'URL distante:
Maintenant, toutes les commandes devraient fonctionner comme d'habitude.
la source
Je viens de rencontrer le problème aujourd'hui.
Méthode de dépannage: Avec SourceTree sur les serveurs Windows, vous pouvez essayer de l'exécuter en tant qu'administrateur. Cela résout mon problème de «impossible de mettre à jour la référence locale» sur Atlassian Source Tree 2.1.2.5 sur un serveur Windows Server 2012 R2 dans le domaine.
Si vous pouvez trop reproduire cette situation, cela prouve que le problème est dû à un problème d'autorisation. Il vaut mieux explorer et trouver la cause principale - probablement certains fichiers particuliers appartiennent à d'autres utilisateurs et autres - sinon il y a un effet secondaire indésirable: vous devrez exécuter SourceTree en tant qu'administrateur pour le reste de l'éternité.
la source
Notez un cas spécifique qui pourrait provoquer ce problème.
Un jour, j'ai poussé une branche nommée "fonctionnalité / sous-fonctionnalité", tout en ayant une branche "fonctionnalité" sur la télécommande.
Cette opération a bien fonctionné sans aucune erreur de mon côté, mais lorsque mes collègues ont récupéré et / ou tiré une 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 en supprimant
feature
branche sur remote (git push --delete origin feature
) puis en l'exécutantgit remote prune origin
sur le référentiel de mes collègues, qui a généré des messages comprenant* [pruned] origin/feature
.Donc, je suppose que
git fetch
j'essayais de créer unesubfeature
référence dans lefeature
dossier sur git en interne (.git / ...), mais la création du dossier a échoué car il y avaitfeature
déjà une référence.la source
Nous avons rencontré ce problème lorsqu'un développeur sur Mac a créé une branche avec un symbole supérieur à ">" dans le nom de la branche.
Cela a provoqué des problèmes dans TeamCity et sur les ordinateurs Windows locaux exécutant SourceTree. BitBucket l'a laissé passer sans aucun problème.
Pour résoudre, l'utilisateur a supprimé la branche et l'a recréée. Ce qui était agréable et facile.
la source
Eu le même msg mais avec un répertoire, a obtenu un msg échoué lors de la traction.
git --prone ne m'a pas aidé non plus. Il s'avère qu'un fichier portant le même nom qu'un répertoire a été créé à distance.
J'ai dû aller dans .git \ logs \ refs \ remotes \ origin et effacer le fichier de paramètres régionaux - puis tirer à nouveau, tout va bien.
la source