W moim bieżącym repozytorium mam następujące dane wyjściowe:
$ git branch -a
* master
remotes/origin/master
remotes/public/master
Chcę usunąć remotes/public/master
z listy oddziałów:
$ git branch -d remotes/public/master
error: branch 'remotes/public/master' not found.
Ponadto wynik działania git remote
jest dziwny, ponieważ nie zawiera public
:
$ git remote show
origin
Jak mogę usunąć „piloty / public / master” z listy oddziałów?
Zaktualizuj, wypróbowałem git push
polecenie:
$ git push public :master
fatal: 'public' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
git
branch
remote-branch
cmcginty
źródło
źródło
git remote prune [remote-name]
lubgit fetch -p [remote-name]
nie działać w scenariuszu? Robienie tego przy użyciugit gc
jest o wiele silniejsze niż zwykle potrzebne.git remote prune [remote-name]
nie będzie działać z git svn, chociaż żaden teżgit gc
...git branch -rd origin/name
nie działa. @Casey, prawdopodobnie powinieneś wybrać drugą odpowiedź - jest to nieco mniej niebezpieczne.master
... szczególnie podczas usuwania na pilocie.Odpowiedzi:
Być może potrzebujesz czyszczenia:
lub może potrzebujesz suszonych śliwek:
Wydaje się jednak, że należy je wcześniej wyczyścić
Może to oznaczać, że ręcznie zmodyfikowałeś plik konfiguracyjny i tak się nie stało lub masz problemy z uprawnieniami.
Może uruchom to jeszcze raz i zobacz, co się stanie.
Kontekst porady
Jeśli spojrzysz na dzienniki wersji , zauważysz, że zasugerowałem więcej „poprawnych” technik, które z jakiegokolwiek powodu nie chciałyby działać w ich repozytorium.
Podejrzewałem, że OP zrobił coś, co sprawiło, że ich drzewo pozostało w niespójnym stanie, co spowodowało, że zachowywał się nieco dziwnie, i musiałem
git gc
naprawić pozostawione za nim cruft.Zazwyczaj
git branch -rd origin/badbranch
wystarcza dla nuking lokalnego oddziału śledzenia, lubgit push origin :badbranch
za nuking zdalną gałąź, i zazwyczaj będzie nie trzeba zadzwonićgit gc
źródło
git gc
nie jest tu potrzebne, alegit remote prune
sprawia, że czuję się bezpieczniejszy niż ręczne usuwanie rzeczygit branch -rd
, ponieważ git sprawdza, które zdalne gałęzie są wykonywane.Wszystko, co musisz zrobić, to
Spowoduje to usunięcie wszystkich lokalnych oddziałów, które są zdalnie usuwane.
Jeśli korzystasz z git 1.8.5+, możesz ustawić to automatycznie
lub
źródło
Spowodowałoby to usunięcie zdalnej gałęzi o nazwie wskazanej przez
master
Kent Fredrica.Aby wyświetlić listę oddziałów zdalnego śledzenia:
Aby usunąć gałąź zdalnego śledzenia:
źródło
git branch -rd removed_remote/branch
pracował dla mnie, podczas gdygit gc --prune=now
był bezwartościowy.git prune
bez żadnych problemów, ale mój współpracownik, który rozwidlił nasze główne repozytorium ** TYLKO MOŻE ** użyłgit branch -rd public/master
rozwiązania w stylu, aby oczyścić swoje środowisko.git branch -rd public/master
było to, czego mi brakowało. Miałemheroku/master
iherkou/master
... lol woopsWszystko, co musisz zrobić, to
To takie proste. Nie ma powodu, aby dzwonić do gc tutaj.
źródło
git branch -rd $(git branch -r)
a następnie przywrócić prawidłowe, wykonując pobieranie.git config -e
zmieniać nazwę mojego pilota. Zmieniłem nazwę pilotamine
naorigin
. To było najlepsze rozwiązanie dla mnie:git branch -rd $(git branch -r | grep 'mine/')
git gc --prune=now
nie jest tym, czego chcesz.lub
git remote prune origin
# jeśli to jest zdalne źródłojest tym, czego chcesz
źródło
Przyjęta odpowiedź nie działała dla mnie, gdy referencja była zapakowana. Robi to jednak:
źródło
W moim przypadku próbowałem usunąć wpisy, które zostały zapisane
.git/packed-refs
. Możesz edytować ten zwykły plik tekstowy i usuwać z niego wpisy, któregit br -D
nie umieją dotykać (przynajmniej w wersji 1.7.9.5).Znalazłem to rozwiązanie tutaj: https://stackoverflow.com/a/11050880/1695680
źródło
git gc
, kiedy spakuje twoje commity do wysoce skompresowanego archiwum, przeniósł również odwołania do jednego zwykłego pliku tekstowego, być może w celach optymalizacji; Mam nadzieję, że przyszłe wersje git mogą zawieraćgit br -D ...
spakowane referencje.Źródło: http://www.gitguys.com/topics/adding-and-removing-remote-branches/
źródło
Nie wiedziałem o tym
git branch -rd
, więc sposobem, w jaki rozwiązałem takie problemy dla siebie, jest traktowanie mojego repozytorium jako zdalnego repozytorium i zdalne usuwanie.git push . :refs/remotes/public/master
. Jeśli inne sposoby nie działają i masz jakieś dziwne odniesienia, których chcesz się pozbyć, ten surowy sposób jest pewny. Daje dokładną precyzję do usuwania (lub tworzenia!) Dowolnego rodzaju referencji.źródło
Tylko nieznacznie powiązane, ale nadal mogą być pomocne w tej samej sytuacji, co my - korzystamy z sieciowego udziału plików w naszym zdalnym repozytorium. W zeszłym tygodniu wszystko działało, w tym tygodniu pojawił się błąd „Zdalne pochodzenie nie reklamowało Ref dla referencji oddziałów / szefów / mistrza. Ten Ref może nie istnieć w pilocie lub może być ukryty przez ustawienia uprawnień”
Ale wierzyliśmy, że nic nie zrobiono, by zepsuć rzeczy. NFS robi migawki, więc przejrzałem każdą „poprzednią wersję” i zobaczyłem, że trzy dni temu rozmiar repozytorium w MB zmniejszył się z 282 MB do 33 MB, a teraz istniało około 1403 nowych plików i 300 folderów. Zapytałem moich współpracowników, a jeden próbował tego dnia naciskać, a potem go anulowałem.
Użyłem funkcji „Przywróć” NFS, aby przywrócić ją tuż przed tą datą, a teraz wszystko działa poprawnie. Próbowałem wcześniej suszonych śliwek, chyba nie pomogłem. Może trudniejsze porządki by zadziałały.
Mam nadzieję, że to może kiedyś pomóc komuś innemu!
Sójka
źródło
Miałem podobny problem. Żadna z odpowiedzi nie pomogła. W moim przypadku miałem dwa usunięte zdalne repozytoria pokazujące się na stałe.
Moim ostatnim pomysłem było ręczne usunięcie wszystkich odniesień do niego.
Powiedzmy, że repozytorium nosi nazwę „Repo”. Zrobiłem:
Tak więc usunąłem odpowiednie pliki i katalogi z folderu .git ( ten folder można znaleźć w aplikacji Rails lub na komputerze https://stackoverflow.com/a/19538763/6638513 ).
Potem zrobiłem:
Znaleziono niektóre pliki tekstowe, w których usunąłem odpowiednie wiersze. Teraz wszystko wydaje się w porządku.
Zwykle powinieneś zostawić tę pracę do zrobienia.
źródło