Kiedy używam autouzupełniania basha w Gicie, ciągle pokazuje mi gałęzie starych pilotów, których już nie mam. Kiedy robię git branch -la
, pokazuje te stare piloty i gałęzie, a git branch -l
nie chce. A ls .git/refs/remotes/
także je pokazuje. Jednak nie są one obecne w moim .git / config i nie są też wyświetlane, gdy uruchamiam git remote show
.
Jak więc się ich pozbyć, ponieważ moja lista autouzupełniania jest teraz zbyt długa.
Próbowałem już:
git reflog expire --expire=now --all
git gc --prune=now
rm .git/refs/remotes/theoldremote
git remote prune theoldremote
Mam również świadomość, że mogę po prostu ponownie sklonować repozytorium, ale to tylko oszustwo ;-)
git remote rm
teraz (git 2.0.1, czerwiec 2014) usuń najpierw gałęzie zdalnego śledzenia. Powinno to pomóc w uniknięciu sprzątania starych gałęzi. Zobacz moją odpowiedź poniżejOdpowiedzi:
Git nie usuwa (lokalnych) gałęzi zdalnego śledzenia automatycznie, jeśli gałąź została usunięta ze zdalnego repozytorium. Dodatkowo, przed wersją 2.0.1 gałęzie zdalnego śledzenia w niektórych przypadkach nie były usuwane po usunięciu pilota z konfiguracji git (zobacz odpowiedź VonC).
Aby usunąć przestarzałe gałęzie zdalnego śledzenia (gałęzie, które zostały usunięte w zdalnym repozytorium) dla jednego z twoich zdalnych repozytoriów, uruchom
Aby zacytować stronę podręcznika lub
git remote
:Jednak z twojego pytania wygląda na to, że usunąłeś go ręcznie
.git/refs/remotes/theoldremote
, więc Git nie wie już o zdalnym repozytorium, do którego należały gałęzie zdalnego śledzenia. Nie tak powinieneś to robić.Normalnym sposobem usunięcia zdalnego repozytorium jest uruchomienie
Spowoduje to usunięcie pilota z twojego
.git/config
i usunie gałęzie zdalnego śledzenia.Jeśli po prostu usuniesz katalog poniżej
.git/refs/remotes/
, gałęzie pozostaną. Następnie będziesz musiał usunąć je ręcznie:Potrzebujesz opcji,
-r
aby usunąć zdalną gałąź.źródło
fatal: 'kolichikov' does not appear to be a git repository
.git gc
, co wywołuje git prune. ”. Należy jednak pamiętać, żegit gc
nie jest to zgodne z--dry-run
.git branch -rd <remote>/<branchname>
było tym, czego szukałem. Dziękuję Ci!używam
aby usunąć oddział z serwera.
aby usunąć zdalne odniesienia, które już nie istnieją na serwerze
źródło
fatal: 'kolichikov' does not appear to be a git repository
Uwaga: chociaż odpowiedzią jest git remote prune, wiedz, że począwszy od git 2.0.1 (25 czerwca 2014 r.), A
git remote rm
zaczyna się od usunięcia gałęzi zdalnego śledzenia .Miejmy więc nadzieję, że nie powinno się czyścić starych gałęzi po pliku
git remote rm
.Zobacz commit b07bdd3 autorstwa Jens Lindström (
jensl
)remote rm
: usuń zdalną konfigurację jako ostatniąAle jeśli musisz, proste
git fetch
może wystarczyć, pod warunkiem, że ustawiłeś najpierw:źródło
Nie wysyłaj niczego do gałęzi, aby ją usunąć:
git push remote :remote_branch
Jest gdzieś w dokumentacji, ale nie jest to tak naprawdę oczywiste.
A może źle zrozumiałem twoje pytanie?
źródło
git
Ok, rozumiem. Problem polegał na tym, że piloty już nie istnieją, ale istnieją gdzieś w bazie danych git. Ponownie dodałem piloty, a potem zrobiłem
Potem znikają z listy. Jakoś nie usunąłem ich poprawnie, zanim zgaduję.
źródło
Byłem zdezorientowany, gdy zdalne gałęzie, które zostały usunięte po stronie serwera, nadal pojawiały się, gdy uruchomiłem:
Następujące polecenie naprawiło to dla mnie (w wersji git 2.25.0):
źródło