Odpowiedzi:
Nie rozumiem konsekwencji tego, ale jak sugerowano w tym wątku , kiedy to spotkałem, właśnie to zrobiłem
$ mv .git/refs/remotes/origin/HEAD /tmp
(trzymanie go na wszelki wypadek), a potem
$ git gc
pracował bez narzekania; Nie napotkałem żadnych problemów.
git prunezadziałał dla mnie sposób na usunięcie danych zgromadzonych w Git, ale nie ma do nich żadnych przydatnych odniesień.
$ mv .git/refs/remotes/origin/HEAD /tmp $ git gc git prune
git gcdziałało dla mnie
Problem, na który natknąłem się (który jest tym samym problemem, o którym @Stavarengo wspomniał w powyższym komentarzu ) polega na tym, że domyślna zdalna gałąź ( developw moim przypadku) została usunięta, ale nadal była przywoływana w .git/refs/remotes/origin/HEAD.
Otwarcie .git/refs/remotes/origin/HEADw moim edytorze pokazało to:
ref: refs/remotes/origin/develop
I dokładnie edytowane go do punktu, w moim nowym domyślnym gałęzi i wszystko było dobrze:
ref: refs/remotes/origin/master
Wskazówka, która dała mi wskazówkę, była taka, że uruchomienie git prunepokazało ten błąd:
> git prune
warning: symbolic ref is dangling: refs/remotes/origin/HEAD
Po zobaczeniu odpowiedzi Trentona spojrzałem na mój .git/refs/remotes/origin/HEADi zobaczyłem, że wskazuje on również na starą gałąź, która jest teraz usunięta.
Ale zamiast samodzielnie edytować plik, wypróbowałem rozwiązanie Ryana:
git remote set-head origin --auto
Automatycznie ustawił plik na nową gałąź i git gcpo tym działał dobrze.
git remote set-head $REMOTE --autow moim przypadku $ REMOTE jest zdalnym aliasem, a nie domyślnym „źródłem”, ponieważ mam konfigurację wielu pilotów.
Myślałem, że rozwiązanie jest następujące, ponieważ wydawało się, że działa, ale okazuje się, że w rzeczywistości nie rozwiązuje problemu.
git remote set-head origin --auto
git prune(zgodnie z zaleceniami w wynikach pierwszego polecenia), więc nie jestem w stanie dokładnie powiedzieć, co mi pomogło - pierwsze, drugie lub oba.
git remote set-head origin --autonaprawiono moje referencje / piloty / pochodzenie / plik HEAD bez konieczności używaniagit prune
error: Multiple remote HEAD branches. Please choose one explicitlyi musiałem użyć git remote set-head origin mybranch(podczas gdy gałąź „mybranch” była wyrejestrowana), aby błąd zniknął.
Wygląda na to, że twoje symboliczne referencje mogą być zepsute ... Spróbuj zastąpić je domyślną gałęzią w następujący sposób: Na przykład moja domyślna gałąź to master
$ git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/master
$ git fetch --prune
$ git gc
To powinno to naprawić.
Przyczyną tego dla mnie była praca w skompresowanym folderze w systemie Windows. Gdy folder został zdekompresowany, spowodował uszkodzenie plików paczek, powodując kaskadowe inne dziwne problemy, takie jak niemożność przycięcia nieistniejących gałęzi.
Jedynym rozwiązaniem było wyczyszczenie katalogu roboczego i ponowne sklonowanie pilota (ów) repozytorium. Na szczęście nadal mogłem naciskać i pobierać aktualizacje, aby nic nie zginęło. Teraz wszystko jest dobrze.
masterna inną o nazwiedevelop. Kilka dni wcześniej zmieniłem go z powrotem zdevelopnamasteri usunąłem starą domyślną gałąźdevelop, ale w moim katalogu roboczym.git/refs/remotes/origin/HEADnadal wskazywał plik,refs/remotes/origin/developktóry już nie istnieje. W tej sytuacji usunięcie pliku zadziałało.