Message complet:
error: Ref refs/remotes/Origin/user is at 3636498c2ea7735fdcedc9af5ab3c8689e6abe77 but expected a21359c6cc2097c85775cde6a40105f4bd7100ec
From github.com:{github project url}
! a21359c..6273ffc user -> Origin/user (unable to update local ref)
Si vous exécutez git sous un système de fichiers non sensible à la casse (Windows ou OS X), cela se produira s'il existe deux branches portant le même nom mais avec une casse différente, par exemple. user_model_changes
et User_model_changes
étant donné que les deux branches distantes correspondront à la même référence de suivi.
Supprimez la mauvaise branche distante (vous ne devriez pas avoir de branches qui diffèrent uniquement par la casse), puis git remote Prune Origin
et tout devrait fonctionner
git update-ref -d
a résolu l'instance de cette erreur, par exemple.
git update-ref -d refs/remotes/Origin/user
Notez que cela n'a pas d'incidence sur la télécommande.
Dans mon cas, un git fetch
ultérieur a à nouveau récupéré cette branche, et les suivants récupérations/extractions git n'ont plus donné l'erreur "la référence distante est à mais attendue".
Notez également que si vous ne vous souciez pas de la branche en question (par exemple, vous souhaitez simplement mettre à jour le maître, pas Origine/utilisateur), une solution de contournement git pull
consiste à extraire puis à fusionner la branche qui vous intéresse, par exemple.
git fetch # may give an error for a particular branch, but other branches will still be successfully fetched
git merge Origin/master
Supprimez simplement les dossiers et les fichiers sous ".git\refs\remotes\Origin" ... ..
J'ai couru ceci pour résoudre le problème:
git gc --Prune=now
Je devais retirer ma branche de ma ligne de commande à l'adresse:
.git\refs\remotes\{my remote}\{**my branch**}
et ensuite faire manuellement:
git pull [remote_name] [branch_name]
J'ai pu tirer les changements.
Note: J'utilisais SourceTree et j'étais incapable de tirer.
Utilisez les deux commandes ci-dessous une par une.
git gc --Prune=now
git remote Prune Origin
Cela résoudra votre problème.
Une réinitialisation matérielle résoudra également le problème
git reset --hard Origin/master
Des étapes plus claires
dans le terminal
cd /.git/refs/remotes/Origin
ls
, vous verrez quelques branches etTÊTE
Supprimez la branche qui vous semble poser problème
rm branchname
Si cela ne fonctionne pas, supprimez toutes les branches/HEAD
J'espère que cela fonctionne maintenant.
Essayez ceci, cela a fonctionné pour moi . Dans votre terminal: git remote Prune Origin
.
Même cas ici, mais rien dans les commentaires postés, c'est juste dans mon cas, je n'ai qu'une seule branche (maître) et n'utilise que le système de fichiers Unix, cette erreur se produit de manière aléatoire lorsque j'exécute git fetch --progress --Prune Origine et que la branche est en avance ou 'Origine/maître'. Personne ne peut s’engager, 1 seul utilisateur peut faire du Push.
REMARQUE: j'ai un sous-module dans le répertoire acme et acme a de nouveaux changements de sous-module (nouveaux commits), je dois d'abord effectuer une mise à jour de sous-module avec la mise à jour de sous-module git.
[2014-07-29 13:58:37] Payload POST received from Bitbucket
[2014-07-29 13:58:37] Exec: cd /var/www/html/acme
---------------------
[2014-07-29 13:58:37] Updating Git code for all branches
[2014-07-29 13:58:37] Exec: /usr/bin/git checkout --force master
[2014-07-29 13:58:37] Your branch is ahead of 'Origin/master' by 1 commit.
[2014-07-29 13:58:37] (use "git Push" to publish your local commits)
[2014-07-29 13:58:37] Command returned some errors:
[2014-07-29 13:58:37] Already on 'master'
---------------------
[2014-07-29 13:58:37] Exec: /usr/bin/git fetch --progress --Prune Origin
[2014-07-29 13:58:39] Command returned some errors:
[2014-07-29 13:58:39] error: Ref refs/remotes/Origin/master is at 8213a9906828322a3428f921381bd87f42ec7e2f but expected c8f9c00551dcd0b9386cd9123607843179981c91
[2014-07-29 13:58:39] From bitbucket.org:acme/acme
[2014-07-29 13:58:39] ! c8f9c00..8213a99 master -> Origin/master (unable to update local ref)
---------------------
[2014-07-29 13:58:39] Unable to fetch Git data
Pour résoudre ce problème (dans mon cas), lancez d'abord git Push si votre branche est en avance sur Origin.
git for-each-ref --format = 'delete% (refname)' refs/original | git update-ref --stdin git reflog expire --expire = maintenant --all git gc --Prune = maintenant
J'ai eu le même problème qui était dû au fait que j'avais réinitialisé un commit plus ancien alors que j'avais déjà poussé vers la branche distante.
Je l'ai résolu en supprimant ma branche locale, puis en vérifiant la branche d'origine git checkout Origin/my_branch
et en exécutant git checkout my_branch
.
Je sais que c'est vieux, mais j'ai ma propre solution. Parce que j'utilise l'arbre source, cette erreur survient parce que quelqu'un crée une nouvelle branche. L'arbre source est confus à ce sujet. Après avoir appuyé sur le bouton "Actualiser" en regard de la liste déroulante "branche distante à extraire", il semble que sourcetree ait mis à jour la liste des branches et que je peux maintenant extraire avec succès.