En utilisant git 1.6.4.2, quand je fais un git pull
je reçois 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é.
Essayez de nettoyer votre référentiel local avec:
$ git gc --Prune=now
$ git remote Prune Origin
homme git-gc (1):
git-gc - Cleanup unnecessary files and optimize the local repository
git gc [--aggressive] [--auto] [--quiet] [--Prune=<date> | --no-Prune]
Runs a number of Housekeeping tasks within the current repository, such as compressing file revisions
(to reduce disk space and increase performance) and removing unreachable objects which may have been
created from prior invocations of git add.
Users are encouraged to run this task on a regular basis within each repository to maintain good disk
space utilization and good operating performance.
homme git-remote (1):
git-remote - manage set of tracked repositories
git remote Prune [-n | --dry-run] <name>
Deletes all stale remote-tracking branches under <name>. These stale branches have already been
removed from the remote repository referenced by <name>, but are still locally available in
"remotes/<name>".
Arrivé à moi aussi. Dans mon cas, le mauvais arbitre était le maître et j'ai fait ce qui suit:
rm .git/refs/remotes/Origin/master
git fetch
Cela a permis à git de restaurer le fichier ref. Après cela, tout a fonctionné comme prévu à nouveau.
Cela a fait le travail pour moi:
git gc --Prune=now
Pour moi, cela a fonctionné pour supprimer les fichiers qui génèrent des erreurs du dossier .git/refs/remotes/Origin/
.
Exécutez les commandes suivantes:
rm .git/refs/remotes/Origin/master
git fetch
git branch --set-upstream-to=Origin/master
Juste au cas où, si vous avez besoin de savoir ce qui est
.git/refs/remotes/Origin/master
, vous liriez la section Remotes in Références Git .
J'ai eu le même problème et je l'ai résolu en allant dans le fichier sur lequel il se trompait
\repo\.git\refs\remotes\Origin\master
Ce fichier était plein de null, je l'ai remplacé par le dernier ref de github.
Dans mon cas, le problème a été résolu après la suppression de tous les fichiers de référence de suppression dans le répertoire .git
.
Si vous regardez le message, il vous dira quels fichiers vous devez supprimer (spécifiquement).
Les fichiers à supprimer sont situés sous .git/refs/remotes
.
Je viens de supprimer tous les fichiers là-bas et j'ai lancé gc Prune
git gc --Prune=now
Après cela, tout fonctionne bien.
Je voudrais juste ajouter comment il peut arriver qu'une référence se casse.
Sur mon système (Windows 7 64 bits), lorsqu'un BSOD se produit, certains des fichiers de référence stockés (le plus souvent ouverts/en cours d'écriture dans BSOD) sont remplacés par NULL
caractères (ASCII 0).
Comme d'autres l'ont mentionné, pour résoudre ce problème, il suffit de supprimer ces fichiers de référence non valides et de relire ou d'extraire le référentiel.
Erreur:cannot lock ref 'refs/remotes/Origin/some/branch': unable to resolve reference 'refs/remotes/Origin/some/branch': reference broken
Solution: supprime le fichier %repo_root%/.git/refs/remotes/Origin/some/branch
git fetch --Prune
a corrigé cette erreur pour moi:
[marc.zych@marc-desktop] - [~/code/driving] - [Wed May 10, 02:58:25]
[I]> git fetch
error: cannot lock ref 'refs/remotes/Origin/user/janek/integration/20170505': 'refs/remotes/Origin/user/janek/integration' exists; cannot create 'refs/remotes/Origin/user/janek/integration/20170505'
From github.com:zooxco/driving
! [new branch] user/janek/integration/20170505 -> Origin/user/janek/integration/20170505 (unable to update local ref)
From github.com:zooxco/driving
[marc.zych@marc-desktop] - [~/code/driving] - [Wed May 10, 02:58:30]
[I]> git fetch --Prune
- [deleted] (none) -> Origin/user/janek/integration
Cela suppose cependant que la branche incriminée ait été supprimée sur la télécommande.
Essayez le:
git gc --Prune=now
git remote Prune Origin
git pull
Pour répondre à cette question très brièvement, ce problème survient lorsque votre section locale dispose d'informations sur la télécommande et que quelqu'un modifie quelque chose qui le rend distant et désynchronise vos modifications.
J'avais ce problème parce que quelqu'un a supprimé une branche distante et a de nouveau été créé avec le même nom.
Pour traiter de tels problèmes, effectuez une extraction ou une récupération à distance.
git remote Prune Origin
ou si vous utilisez une interface graphique, effectuez une récupération à distance.
Si git gc --Prune=now
ne vous aide pas. (pas de chance comme moi)
Ce que j’ai fait, c’est de supprimer le projet en local et de le cloner à nouveau.
J'ai pu travailler avec
git remote update --Prune
Essaye ça:
git pull Origin Branch_Name
Branch_Name
, la branche sur laquelle vous vous trouvez actuellement.
Si vous ne faites que git pull
, tous les autres noms de branches créés sont également extraits.
C'est la raison pour laquelle vous obtenez ceci:
! [new branch] split-css -> Origin/split-css (unable to update local ref)
J'ai eu le même problème. je suis les étapes suivantes
1) changez de branche ayant des problèmes avec une autre branche
2) supprimer cette branche
3) Caisse à nouveau.
Remarque: - Vous pouvez stocker vos modifications non validées et les rétablir.
Pour moi, j'avais une branche locale nommée feature/phase2
et la branche distante s'appelait feature/phase2/data-model
. Le conflit de nommage était la cause du problème, alors j'ai supprimé ma branche locale (vous pouvez la renommer si vous aviez quelque chose à conserver)
J'ai utilisé git Prune Origin
et c'est ce qui a été fait.
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 effacé le cache du composeur et après avoir supprimé le contenu du dossier du fournisseur:
rm -rf vendor/*
git gc --Prune=now
git pull
composer clear-cache
composer update my/package
A fait 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 je ai réinitialisé l'URL distante comme ci-dessous;
git remote set-url Origin [GIT_REPO_URL]
Vérifiez l'URL distante:
git remote -v
Maintenant, toutes les commandes devraient fonctionner comme d'habitude.
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 sors des branches (caisse) 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 corruption apparente.
Nous avons eu 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 causé des problèmes dans TeamCity et sur des 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.
# remove the reference file of the branch "lost"
rm -fv ./.git/refs/remotes/Origin/feature/v1.6.9-api-token-bot-reader
# get all the branches from the master
git fetch --all
# git will "know" how-to handle the issue from now on
# From github.com:futurice/senzoit-www-server
# * [new branch] feature/v1.6.9-api-token-bot-reader ->
# Origin/feature/v1.6.9-api-token-bot-reader
# and Push your local changes
git Push
Écrire un cas spécifique qui pourrait causer ce problème.
Un jour, j'ai poussé une branche nommée "feature/subfeature", tout en ayant "branchée" 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 ont tous eu exactement le même message d'erreur unable to update local ref
, cannot lock ref 'refs/remotes/Origin/feature/subfeature
.
Ce problème a été résolu en supprimant la branche feature
sur (git Push --delete Origin feature
) à distance, puis en exécutant git remote Prune Origin
sur le dépôt de mes collègues, ce qui générait des messages comprenant * [pruned] Origin/feature
.
Donc, je suppose que git fetch
essayait de créer subfeature
ref dans le dossier feature
sur git en interne (.git/...), mais la création du dossier a échoué car il y avait déjà feature
ref.
Vous avez ce problème lorsque vous essayez de cloner un fichier créé avec git bundle
, aucune des autres réponses ne fonctionnait car je ne pouvais pas cloner le référentiel (donc git gc
et supprimer/modifier des fichiers était hors de question).
Il y avait cependant un autre moyen de résoudre ce problème - le fichier source d'un fichier .bundle
commençait par:
# v2 git bundle
9a3184e2f983ba13cc7f40a820df8dd8cf20b54d HEAD
9a3184e2f983ba13cc7f40a820df8dd8cf20b54d refs/heads/master
9a3184e2f983ba13cc7f40a820df8dd8cf20b54d refs/heads/master
PACK.......p..x...Kj.0...: (and so on...)
En supprimant simplement la quatrième ligne avec vim, le problème a été résolu.
J'ai juste rencontré le problème aujourd'hui.
Méthode de dépannage: Avec SourceTree sur des 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 Windows Server 2012 R2 dans le domaine.
Si vous pouvez également reproduire cette situation, cela prouve que le problème est dû à un problème d'autorisation. Il est préférable d’explorer et de rechercher la cause du problème (il est probable que certains fichiers appartiennent à d’autres utilisateurs et autres), sans quoi il existe un effet secondaire indésirable: vous devrez exécuter SourceTree en tant qu’administrateur pour le reste de votre vie.