2011-08-03 10 views
37

Utworzono gałąź o nazwie "6796", następnie przekazałem ją do zdalnego serwera, sprawdziłem na innym serwerze, wprowadziłem inne zmiany , pchnął go, a następnie połączył go z wzorcem i usunął - lokalnie i zdalnie (git push :6796) - na drugim serwerze. Teraz, kiedy biegnę git pull:Wyświetlacze git pull "fatal: Nie udało się znaleźć zdalnych refs/heads/xxxx" i rozłącza się

fatal: Couldn't find remote ref refs/heads/6796 
[email protected]:~/path/to/repo$ fatal: The remote end hung up unexpectedly 

ale git pull origin master działa normalnie. Wydaje mi się, że istnieje 6796 odwołań odniesienia ... jak rozwiązać ten problem?

Odpowiedz

67

Prawdopodobnie istnieje kilka poleceń, aby go rozwiązać, ale zacznę od sprawdzenia w pliku .git/config w poszukiwaniu odniesień do tej gałęzi i usuwania ich.

+6

Dziękuję! Miałem tę linię.git/config: '[zdalny" początek]] fetch = + refs/heads/6796: refs/remote/origin/6796' Domyślam się, że ta linia jest tam, ponieważ usunąłem gałąź zdalną i przycinam ją z innej serwer; więc na tym serwerze git wiedział o usunięciu i usunął wiersz w .git/config, ale tutaj git nie został powiadomiony o usunięciu. Wielkie dzięki! – mdesantis

+0

Opcja 'prune' dostarczona przez @jweyrich jest dobra do" odświeżenia "statusu pochodzenia – v01pe

+0

poszukaj .gitconfig na twoim katalogu głównym –

13

Trzeba też usunąć z lokalnym oddziałem:

git branch -d 6796 

Innym sposobem jest przycinać wszystkie branże nieświeży z lokalnego repozytorium. Spowoduje to usunięcie wszystkich lokalnych oddziałów, które już zostały usunięte z pilota: „”.

git remote prune origin --dry-run 
+0

Już to usunąłem i przycinałem ... dziękuję! – mdesantis

+0

to dobry sposób na to (git remote przycinanie). Czy to możliwe, że git usunie coś, co nadal istnieje na zdalnym? Mam na myśli, że to polecenie jest niebezpieczne lub tylko przycina gałęzie, które są już usunięte ze zdalnego – NickSoft

+2

@NickSoft, przytaczając [oficjalną dokumentację] (http://www.kernel.org/pub/software/scm/git/docs/git- remote.html): 'Usuwa wszystkie przestarzałe gałęzie śledzenia pod numerem . Te nieaktualne gałęzie zostały już usunięte z zdalnego repozytorium, do którego odnosi się , ale nadal są dostępne lokalnie w "remote/". Z opcją --dry-run, zgłoś, które gałęzie będą przycinane, ale ich nie przycinaj. " – jweyrich

1

po prostu wpadł na podobnym problemie kiedy próbował popełnić do nowo utworzonej repo z w jego imieniu. Widziałem kilka innych problemów z umieszczaniem "." w nazwie repo.

Właśnie ponownie stworzył repo i

replaced "." with "-" 

Mogą istnieć inne sposoby, aby rozwiązać ten problem, ale to było szybkie ustalenie dla mnie, ponieważ było to nowe repo.

+0

Co masz na myśli przez nazwę? – 0xcaff

2

Miałem podobny problem, gdy próbowałem uzyskać przyciąganie jednym cytatem "w jego imieniu.

musiałem uciec ściągania nazwę żądanie:

git pull https://github.com/foo/bar namewithsingle"'"quote 
1

Ten błąd może być rzucony w następującej sytuacji również.

Chcesz oddzwonić do oddziału o nazwie feature ze zdalnego repozytorium, ale błąd został zgłoszony, ponieważ w lokalnym repozytorium masz już gałąź o nazwie feature/<feature_name>.

prostu wyewidencjonowania feature oddział pod inną nazwą:

git checkout -b <new_branch_name> <remote>/feature 
0

Aby wyciągnąć zdalnego oddział lokalnie, mam następujące:

git checkout -b branchname // tworzy lokalny oddział z tym samym wymienia i sprawdza na nim

git pull origin branchname // odsyła zdalny do lokalnego

Jedyny raz, kiedy to zrobiłem i to nie zadziałało, usunąłem repozytorium, sklonowałem je ponownie i powtórzyłem powyższe 2 kroki; zadziałało.

Powiązane problemy