Jak usunąć niepoprawne zdalne odniesienie do gałęzi z Gita?
W moim bieżącym repo mam następujące wyjście:
$ git branch -a
* master
remotes/origin/master
remotes/public/master
Chcę usunąć remotes/public/master
z listy gałęzi:
$ git branch -d remotes/public/master
error: branch 'remotes/public/master' not found.
Również wyjście git remote
jest dziwne, ponieważ nie wymienia public
:
$ git remote show
origin
Jak mogę usunąć 'remotes / public/master' z listy gałęzi?
Update, próbowałem git push
komendy:
$ git push public :master
fatal: 'public' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
11 answers
You might be needed a cleanup
git gc --prune=now
Lub może potrzebujesz śliwki
git remote prune public
Śliwka
Usuwa wszystkie przestarzałe gałęzie śledzenia pod
. Te stare gałęzie zostały już usunięte ze zdalnego repozytorium, do którego odwołuje się , ale nadal są dostępne lokalnie w " remotes / ". Z opcją -- dry-run, Raportuj, które gałęzie zostaną przycinane, ale nie przycinaj ich.
Wydaje się jednak, że te powinien być wcześniej wyczyszczony
git remote rm public
Rm
Usuń zdalny o nazwie
. Wszystkie gałęzie zdalnego śledzenia i ustawienia konfiguracji dla zdalnego są usuwane.
Więc może to być ręcznie edytowany plik konfiguracyjny i to się nie stało, lub masz problemy z uprawnieniami.
Może powtórzymy to i zobaczymy, co się stanie.Kontekst Porady
Jeśli spojrzysz w dzienniki rewizji , zauważ, że zasugerowałem więcej "poprawnych" technik, które z jakiegokolwiek powodu nie chciały pracować na swoim repozytorium.
Podejrzewałem, że operacja zrobiła coś, co pozostawiło ich drzewo w niespójnym stanie, co spowodowało, że zachowało się trochę dziwnie i musiałem naprawić pozostawiony cruft.Zwykle git branch -rd origin/badbranch
jest wystarczająca do nukowania lokalnej gałęzi śledzącej lub git push origin :badbranch
do nukowania zdalnej gałęzi i zazwyczaj będziesz nigdy nie musisz call git gc
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:34:41
Wszystko, co musisz zrobić, to
git fetch -p
Usunie wszystkie lokalne oddziały, które zostaną zdalnie usunięte.
Jeśli korzystasz z git 1.8.5 + możesz ustawić to automatycznie
git config fetch.prune true
Lub
git config --global fetch.prune true
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-11 16:14:15
git push public :master
Usunęłoby to zdalną gałąź o nazwie master
, Jak zauważył Kent Fredric.
Do listy gałęzi zdalnego śledzenia:
git branch -r
Aby usunąć gałąź zdalnego śledzenia:
git branch -rd public/master
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-02 02:58:06
All you need to do is
$ git branch -rd origin/whatever
To takie proste. Nie ma powodu, by wzywać tu gc.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-07 20:59:19
git gc --prune=now
nie tego chcesz.
git remote prune public
Or git remote prune origin
# if thats the remote source
Is what you want
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-19 08:40:24
Zaakceptowana odpowiedź nie zadziałała dla mnie, gdy sędzia był spakowany. To jednak:
$ git remote add public http://anything.com/bogus.git
$ git remote rm public
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-12 04:21:17
W moim przypadku próbowałem usunąć wpisy zapisane w .git/packed-refs
. Możesz edytować ten zwykły plik tekstowy i usuwać z niego wpisy, które git br -D
nie wie, jak dotknąć (przynajmniej w wersji 1.7.9.5).
Znalazłem to rozwiązanie tutaj: https://stackoverflow.com/a/11050880/1695680
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:54:59
git push origin --delete <branch name>
Odwołany z: http://www.gitguys.com/topics/adding-and-removing-remote-branches/
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-02 18:28:26
Miałem podobny problem. Żadna z odpowiedzi nie pomogła. W moim przypadku miałem dwa usunięte zdalne repozytoria wyświetlane na stałe.
Moim ostatnim pomysłem było ręczne usunięcie wszystkich odniesień do niego.Powiedzmy, że repozytorium nazywa się "Repo". Zrobiłem:
find .git -name Repo
I usunął odpowiednie pliki i katalogi
grep Repo -r .git
Znalazłem kilka plików tekstowych, w których usunąłem odpowiednie linie. Wszystko wydaje się być w porządku.
Zazwyczaj powinieneś zostawić to praca dla git.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-26 10:20:45
Nie wiedziałem o git branch -rd
, więc sposób, w jaki rozwiązałem takie problemy dla siebie, polega na traktowaniu mojego repo jako zdalnego repo i zdalnym usuwaniu. git push . :refs/remotes/public/master
. Jeśli inne sposoby nie działają i masz jakieś dziwne odniesienie, którego chcesz się pozbyć, ten surowy sposób jest pewny. Daje dokładną precyzję usuwania (lub tworzenia!) wszelkie odniesienia.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-08 23:14:17
Tylko trochę powiązane, ale nadal może być pomocne w tej samej sytuacji, co my - używamy sieciowego udziału plików dla naszego zdalnego repozytorium. W zeszłym tygodniu wszystko działało, w tym tygodniu otrzymaliśmy błąd " Remote origin Nie reklamował Ref dla gałęzi refs / heads / master. Ten Ref może nie istnieć w zdalnym lub może być ukryty za pomocą ustawień uprawnień "
Ale wierzyliśmy, że nic nie zostało zrobione, aby zepsuć rzeczy. NFS robi migawki więc przejrzałem każdą "poprzednią wersję" i zobaczyłem że trzy dni temu rozmiar w MB repozytorium zmalał z 282MB do 33MB, a teraz istniało około 1403 nowych plików i 300 folderów. Zapytałem moich współpracowników i jeden próbował zrobić push tego dnia - potem odwołał.
Użyłem funkcji "Przywróć", aby przywrócić ją do tuż przed tą datą i teraz wszystko działa dobrze ponownie. Próbowałem wcześniej śliwki, nie pomogło. Może ostrzejsze sprzątanie by zadziałało.
Hope this might help someone else one dzień!
Jay
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-13 18:37:01