Pełna wiadomość:
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)
git push --force
. Spróbuj uciecgit pull --force
.Odpowiedzi:
Jeśli korzystasz z git w systemie plików, który nie rozróżnia wielkości liter (Windows lub OS X), nastąpi to, jeśli istnieją dwie gałęzie o tej samej nazwie, ale o różnej wielkości liter, np.
user_model_changes
IUser_model_changes
ponieważ obie zdalne gałęzie będą pasować do tej samej referencji śledzenia .Usuń niewłaściwą gałąź zdalną (nie powinieneś mieć gałęzi, które różnią się tylko wielkością liter), a następnie
git remote prune origin
wszystko powinno działaćźródło
.git\refs\remotes\origin
plik ref w folderze, a następniegit pull
ponownie.Permanent Fix
git update-ref -d
rozwiązałem moją instancję tego błędu, npPamiętaj, że nie ma to wpływu na zdalne.
W moim przypadku kolejne
git fetch
pobranie ponownie tej gałęzi i kolejne pobrania / ściągnięcia gita nie dawały już błędu „zdalne odwołanie jest na, ale oczekiwane”.Jeśli to nie zadziała, tymczasowa poprawka:
Zauważ również, że jeśli nie obchodzi Cię gałąź (np. Chcesz po prostu zaktualizować wzorzec, a nie źródło / użytkownika),
git pull
obejście polega na pobraniu, a następnie scaleniu konkretnej gałęzi, na której Ci zależy, np.źródło
Po prostu usuń foldery i pliki w obszarze
\.git\refs\remotes\origin
. Działa, gdy nie masz nieprzypisanych zmian.źródło
Uruchomiłem to, aby rozwiązać problem:
źródło
Użyj poniższych dwóch poleceń jeden po drugim.
To rozwiąże problem.
źródło
Musiałem usunąć swój oddział z wiersza poleceń pod adresem:
a następnie ręcznie wykonując:
Byłem w stanie wyciągnąć zmiany.
Uwaga: korzystałem z SourceTree i nie mogłem wykonać ściągania.
źródło
.git\packed-refs
zanim została dla mnie naprawiona.Twardy reset również rozwiąże problem
źródło
Jaśniejsze kroki
w terminalu
zrób
ls
, zobaczysz kilka gałęzi i HEADUsuń gałąź, która Twoim zdaniem ma problem
Jeśli to nie zadziałało, usuń wszystkie gałęzie / HEAD
Mam nadzieję, że teraz działa.
źródło
git update-ref -d <branchname>
?Spróbuj, to zadziałało dla mnie. W terminalu:
git remote prune origin
.źródło
Niestety polecenia GIT, takie jak przycinanie i resetowanie lub push, nie działały dla mnie. Prune zadziałało raz, a potem problem powrócił.
Stałym rozwiązaniem, które działało dla mnie, jest ręczna edycja pliku git. Wystarczy przejść do folderu .git projektu, a następnie otworzyć plik spakowany w edytorze tekstu, takim jak Notepad ++. Następnie przejdź do wiersza z uszkodzoną gałęzią i zaktualizuj jego identyfikator GUID do oczekiwanego.
Jeśli masz wiadomość typu:
„błąd: nie można zablokować ref 'referencje / piloty / pochodzenie / funkcja / gałąź_xxx': jest na 425ea23facf96f51f412441f41ad488fc098cf23, ale oczekiwany 383de86fed394ff1a1aeefef4a522d886adcecd79”
następnie w pliku znajdź wiersz z „refs / remotes / origin / feature / branch_xxx”. Przewodnikiem będzie oczekiwany (drugi) - 383de86fed394ff1a1aeefc4a522d886adcecd79. Musisz zmienić go na prawdziwy (pierwszy) - 425ea23facf96f51f412441f41ad488fc098cf23.
Powtórz tę czynność dla pozostałych wadliwych gałęzi, a będziesz mógł kontynuować. Czasami po ponownym pobieraniu musiałem powtarzać dla tych samych gałęzi, które już wcześniej „naprawiłem”. Po ponownym pobraniu GIT aktualizuje przewodniki i daje najnowszą.
W każdym razie problem nie ogranicza programu. Lista oddziałów zostanie zaktualizowana. To raczej ostrzeżenie.
źródło
git for-each-ref --format = 'delete% (refname)' refs / original | git update-ref --stdin git reflog wygasają --expire = teraz --all git gc --prune = teraz
źródło
Ten sam przypadek tutaj, ale nic o opublikowanych komentarzach jest właściwe w moim przypadku, mam tylko jedną gałąź (master) i używam tylko systemu plików Unix, ten błąd występuje losowo, gdy uruchamiam git fetch --progress - wycinanie źródła i gałąź jest przed lub „origin / master”. Nikt nie może zatwierdzić, tylko 1 użytkownik może wykonać wypychanie.
UWAGA: Mam podmoduł w repozytorium acme, a acme mam nowe zmiany submodułu (nowe zatwierdzenia), najpierw muszę wykonać aktualizację podmodułu za pomocą aktualizacji git.
Aby rozwiązać ten problem (w moim przypadku), po prostu uruchom pierwszy git push, jeśli twoja gałąź jest przed początkiem.
źródło
Wiem, że to stare, ale mam własną poprawkę. Ponieważ korzystam z drzewa źródłowego, ten błąd występuje, ponieważ ktoś tworzy nową gałąź. Drzewo źródłowe jest zdezorientowane. Po naciśnięciu przycisku „Odśwież” obok pola „Zdalna gałąź do ściągnięcia” wydaje się, że sourcetree zaktualizowało listę gałęzi i teraz mogę pomyślnie pobrać.
źródło
Miałem ten sam problem, który został spowodowany, ponieważ zresetowałem do starszego zatwierdzenia, mimo że już pchnąłem do zdalnej gałęzi.
Rozwiązałem go, usuwając mój lokalny oddział, a następnie sprawdzając gałąź źródłową,
git checkout origin/my_branch
a następnie wykonującgit checkout my_branch
źródło
Po ciągłym szukaniu jest to rozwiązanie, które zadziałało dla mnie, co wymaga rozbrojenia / usunięcia Upstream
źródło