web-dev-qa-db-fra.com

git pull échoue "incapable de résoudre la référence" "impossible de mettre à jour la référence locale"

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é.

454
Gabrielle

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>".            
727
Vojtech Vitek

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.

480
Michel Krämer

Cela a fait le travail pour moi:

git gc --Prune=now
104
Bernd

Pour moi, cela a fonctionné pour supprimer les fichiers qui génèrent des erreurs du dossier .git/refs/remotes/Origin/.

59
Brian van Rooijen

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 .

39
Matias Sebastiao

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.

34
Noel Tock

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.

32
Uri Shtand

Je voudrais juste ajouter comment il peut arriver qu'une référence se casse.

Cause fondamentale possible

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.

Exemple

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

20
Dawid Ferenczy

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.

17
marczych

Essayez le:

git gc --Prune=now

git remote Prune Origin

git pull
14
annelorayne

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.

 enter image description here

8
Abhijeet Kamble

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.

4
Eric Chen

J'ai pu travailler avec 

git remote update --Prune
2
user1238353

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)
2
user3832506

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.

1
user2619659

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)

1
Nathan Wallace

J'ai utilisé git Prune Origin et c'est ce qui a été fait.

1
TheFakeCake

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
0
ownking

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.

0
Ricky Boy

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.

0
Pysis

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.

0
dylanT
 # 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
0
Yordan Georgiev

É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.

0
ik1ne

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.

0

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.

0
Lionet Chen