Kolega wepchnął nowy zdalny oddział do origin / dev / homepage i nie widzę go po uruchomieniu:
$ git branch -r
Nadal widzę istniejące zdalne oddziały.
Zakładam, że dzieje się tak, ponieważ moje lokalne zdalne referencje nie są aktualne, dlatego kiedy uruchomiłem git pull, nic się nie wydarzyło, ponieważ git pull pobiera tylko bieżącą działającą gałąź, prawda? W przeciwieństwie do git push, które wypycha wszystkie gałęzie, które mają zmiany w odpowiedniej gałęzi zdalnej?
git
remote-branch
hybryda9
źródło
źródło
git pull
, dziękigit fetch <name-of-remote>
załatwił sprawę . Bez nazwy pilota to NIE działało.Odpowiedzi:
Najpierw sprawdź, czy gałąź została faktycznie przekazana zdalnie, używając polecenia
git ls-remote origin
. Jeśli nowa gałąź pojawi się w danych wyjściowych, spróbuj wydać poleceniegit fetch
: powinno pobrać odwołania do gałęzi ze zdalnego repozytorium.Jeśli zdalna gałąź nadal się nie pojawia, sprawdź dwukrotnie (w danych
ls-remote
wyjściowych), jaka jest nazwa gałęzi na zdalnym, a konkretnie, czy zaczyna się odrefs/heads/
. Dzieje się tak, ponieważ domyślnie wartośćremote.<name>.fetch
to:tak, że tylko zdalne odniesienia, których nazwa zaczyna się od,
refs/heads/
będą mapowane lokalnie jako odwołania do zdalnego śledzenia w ramachrefs/remotes/origin/
(tj. staną się gałęziami zdalnego śledzenia)źródło
git fetch
, git pobierze referencje z domyślnego repozytorium zdalnego, które zostało określone w.git/config
: zwykle zostanie wywołaneorigin
, więc oba polecenia są równoważne, ale twoja specyficzna konfiguracja może być inna z jakiegoś powodu. Nie, nie musisz podawaćgit fetch
dla każdej gałęzi, ponieważ (domyślnie) pobiera wszystkie gałęzie.git pull
jest równoważne zgit fetch
+git merge
(lubgit rebase
jeśli zmieniłeś wartości domyślne), więc możesz nadal używać gogit pull
jak zwykle, a nowe zdalne gałęzie pojawią się same.git ls-remote gerritrepo:project
pokazuje nowy oddział zdalny alegit branch -a
nie ... Muszę zrobić kolejnego klona i dopiero wtedy pojawi się nowy oddziałSprawdź, czy
.git/config
zawieraJeśli tak, zmień to na
Wtedy powinieneś móc go używać:
źródło
brew tap user/repo
: lokalna kopia sklonowanego repozytoriumbrew
miała ustawienia, o których wspomniałeś, i nie można było zobaczyć i użyć innych gałęzi, które miałem w moim repozytorium. Dzięki jeszcze raz! :) +1!git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
a następnie,git fetch origin
aby uzyskać wszystkie gałęzie na początku .Najprostsza odpowiedź brzmi:
git fetch origin <branch_name>
źródło
fatal: Couldn't find remote ref <branch_name>
Wykonanie zdalnej aktualizacji git zaktualizuje również listę gałęzi dostępnych w zdalnym repozytorium.
Jeśli używasz TortoiseGit, od wersji 1.8.3.0 możesz zrobić "Git -> Synchronizuj", a pojawi się przycisk "Zdalna aktualizacja" w lewym dolnym rogu okna, które się pojawi. Kliknij to. Następnie powinieneś być w stanie wykonać "Git -> Switch / Checkout" i wyświetlić nową gałąź zdalną w rozwijanym menu gałęzi, które możesz wybrać.
źródło
git remote update
jest starym sposobem na zrobienie tego, nowszym preferowanym poleceniem jestgit fetch
.Powiedzmy, że szukamy wydania / 1.0.5
Kiedy
git fetch -all
jest nie działa i że nie można zobaczyć zdalną gałąź igit branch -r
nie pokazuj tego konkretnego oddziału.1. Wydrukuj wszystkie referencje ze zdalnego (gałęzie, tagi, ...):
git ls-remote origin
Powinien pokazać ci zdalny oddział, którego szukasz.W wynikach pojawi się nowa gałąź „release / 1.0.5”.
2. Wymuś pobranie zdalnego oddziału:
git fetch origin <name_branch>:<name_branch>
Teraz masz również referencje lokalnie, kupujesz (lub cokolwiek) ten oddział.
Zadanie wykonane!
źródło
Brzmi banalnie, ale moim problemem było to, że nie byłem w odpowiednim projekcie. Upewnij się, że jesteś w projekcie, w którym spodziewasz się być; w przeciwnym razie nie będziesz w stanie ściągnąć odpowiednich gałęzi.
źródło
Użyłem brutalnej siły i wyjąłem pilota, a następnie go dodałem
źródło
W końcu zadziałało dla mnie dodanie nazwy zdalnego repozytorium do
git fetch
polecenia, na przykład:Teraz możesz zobaczyć je wszystkie w ten sposób:
źródło
Możesz zapłacić zdalny oddział / n git fetch && git checkout remotebranch
źródło