git pull error :error: remote ref is at maar verwacht

Volledig bericht:

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)

Antwoord 1, autoriteit 100%

Als je git uitvoert onder een bestandssysteem dat niet hoofdlettergevoelig is (Windows of OS X), zal dit gebeuren als er twee branches zijn met dezelfde naam maar met verschillende hoofdletters, b.v. User_model_changesen User_model_changesaangezien beide vertakkingen zullen overeenkomen met dezelfde trackingreferentie.

Verwijder de verkeerde remote branch (je zou geen branches moeten hebben die alleen per hoofdletter verschillen) en dan git remote prune originen alles zou moeten werken


Antwoord 2, autoriteit 92%

Permanente oplossing

git update-ref -dloste mijn exemplaar van deze fout op, bijv.

git update-ref -d refs/remotes/origin/user

Houd er rekening mee dat dit geen invloed heeft op de afstandsbediening.

In mijn geval haalde een volgende git fetchdie branch opnieuw op, en de volgende git fetches/pulls gaven niet langer de foutmelding “remote ref is at but Expected”.

Als dat niet werkt, een tijdelijke oplossing:

Merk ook op dat als je niet om de betreffende branch geeft (bijvoorbeeld als je alleen master wilt updaten, niet origin/user), een git pulltijdelijke oplossing is om op te halen en dan gewoon de bepaalde branche waar u om geeft, bijv.

git fetch # may give an error for a particular branch, but other branches will still be successfully fetched
git merge origin/master

Antwoord 3, autoriteit 27%

Verwijder gewoon de mappen en bestanden onder \.git\refs\remotes\origin.
Werkt, als je geen ongevraagde wijzigingen hebt.


Antwoord 4, autoriteit 25%

Gebruik de onderstaande twee commando’s één voor één.

git gc --prune=now
git remote prune origin

Dit zal je probleem oplossen.


Antwoord 5, autoriteit 22%

Ik heb dit uitgevoerd om het probleem op te lossen:

git gc --prune=now

Antwoord 6, autoriteit 5%

Ik moest mijn takvan mijn opdrachtregel verwijderen op:

.git\refs\remotes\{my remote}\{**my branch**}

en dan handmatig doen:

git pull [remote_name] [branch_name]

Ik kon de wijzigingen doortrekken.

Opmerking: ik gebruikte SourceTreeen kon de pull niet uitvoeren.


Antwoord 7, autoriteit 2%

Een harde reset lost het probleem ook op

git reset --hard origin/master

Antwoord 8, autoriteit 2%

Duidelijkere stappen

  1. in terminal

    cd /.git/refs/remotes/origin
    
  2. doe ls, je zult enkele takkenen HEAD

  3. zien

  4. Verwijder de branch waarvan u denkt dat deze het probleem heeft

    rm branchname
    
  5. Als het niet werkt, verwijder dan alle takken/HEAD

    • je mag trekken

Hopelijk werkt het nu.


Antwoord 9, autoriteit 2%

Helaas werkten GIT-commando’s zoals prune en reset of push niet voor mij. Prune werkte één keer en daarna keerde het probleem terug.

De permanente oplossing die voor mij werkte, is om een ​​git-bestand handmatig te bewerken. Ga gewoon naar de .git-map van het project en open vervolgens het bestand ingepakt-refs in een teksteditor zoals Notepad++. Navigeer dan naar de rij met de falende vertakking en werk zijn guid bij naar de verwachte.

Als je een bericht hebt zoals:

fout: kan ref ‘refs/remotes/origin/feature/branch_xxx’ niet vergrendelen: is op 425ea23facf96f51f412441f41ad488fc098cf23 maar verwacht 383de86fed394ff1a1aeefc4a522d886adcecd79

zoek vervolgens in het bestand de rij met refs/remotes/origin/feature/branch_xxx. De gids daar is de verwachte (2e) – 383de86fed394ff1a1aeefc4a522d886adcecd79. Je moet het veranderen in de echte (1e) – 425ea23facf96f51f412441f41ad488fc098cf23.

Other episodes