web-dev-qa-db-fra.com

erreur git pull: erreur: la référence distante est à mais attendue

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)
175

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

187
krijesta

Correction permanente

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

Si cela ne fonctionne pas, un correctif temporaire:

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
138
JDiMatteo

Supprimez simplement les dossiers et les fichiers sous ".git\refs\remotes\Origin" ... ..

31
Prakash Saravanan

J'ai couru ceci pour résoudre le problème:

git gc --Prune=now
23
elad silver

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.

12
jogam5

Utilisez les deux commandes ci-dessous une par une.

git gc --Prune=now

git remote Prune Origin

Cela résoudra votre problème.

9
Narender Gusain

Une réinitialisation matérielle résoudra également le problème

git reset --hard Origin/master
6
mruanova

Des étapes plus claires

  1. dans le terminal

    cd /.git/refs/remotes/Origin
    
  2. ls, vous verrez quelques branches etTÊTE

  3. Supprimez la branche qui vous semble poser problème

    rm branchname
    
  4. Si cela ne fonctionne pas, supprimez toutes les branches/HEAD

    • vous pouvez wana tirer

J'espère que cela fonctionne maintenant.

3
shareef

Essayez ceci, cela a fonctionné pour moi . Dans votre terminal: git remote Prune Origin.

1
Ranganatha G V

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.

0
Tecnocat

git for-each-ref --format = 'delete% (refname)' refs/original | git update-ref --stdin git reflog expire --expire = maintenant --all git gc --Prune = maintenant

0
Luciano

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.

0
Black

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.

0
Chen Li Yong