Ktoś popchnął oddział o nazwie test
z git push origin test
do wspólnego repozytorium. Widzę gałąź z git branch -r
.
Teraz próbuję sprawdzić zdalny test
oddział.
Próbowałem:
git checkout test
który nic nie robigit checkout origin/test
daje* (no branch)
. Co jest mylące. Jak mogę być w „bez oddziału”?
Jak mogę sprawdzić zdalny oddział Git?
git
git-checkout
remote-branch
Juri Glass
źródło
źródło
upstream
nie tylkoorigin
, a każda zalecana odpowiedź nie robi nic zdalnie pomocnego (zamierzona gra słów). EDYCJA - przepraszam, mnogość sugestii zawartych w 2 najlepszych odpowiedziach była bezużyteczna;git branch test origin/test
Działa trzeci ( ). Cieszę się, że pierwsze 2 mają 20x więcej głosów ...Odpowiedzi:
Aktualizacja
Odpowiedź Jakuba poprawia się w tej kwestii. W wersjach Git ≥ 1.6.6 z tylko jednym pilotem możesz po prostu:
Jak zauważył użytkownik masukomi w komentarzu,
git checkout test
NIE będzie działać w nowoczesnym git, jeśli masz wiele pilotów. W takim przypadku użyjlub stenografia
Stara odpowiedź
Zanim zaczniesz pracować lokalnie na zdalnym oddziale, musisz go pobrać, jak to zostało przywołane w odpowiedziach poniżej.
Aby pobrać gałąź, wystarczy:
Spowoduje to pobranie dla ciebie wszystkich zdalnych gałęzi. Możesz zobaczyć oddziały dostępne do realizacji transakcji za pomocą:
Mając zdalne gałęzie w ręku, musisz teraz sprawdzić gałąź, którą jesteś zainteresowany, dając lokalną kopię roboczą:
źródło
git fetch
to zrobić, aby git był tego świadomyorigin/test
git fetch origin test
origin/test
pobrać, którego nie można rozwiązać jako zatwierdzenia?”git checkout test
NIE będzie działać w nowoczesnym git, jeśli masz wiele pilotów o tej samej nazwie oddziału . Nie może wiedzieć, którego użyć.Sidenote: Dzięki nowoczesnemu Gitowi (> = 1.6.6 ) możesz używać tylko
(zwróć uwagę, że „test” nie jest „początkiem / testem”), aby wykonać magiczną analizę DWIM i utworzyć dla ciebie „lokalny” test gałęzi lokalnej, dla którego w górę byłby „początek / test” gałęzi zdalnego śledzenia.
* (no branch)
Wgit branch
drodze wyjściowych, które są na nienazwanym oddziału, w tak zwanym „indywidualny głowa” państwa (punkty udanie się bezpośrednio do popełnienia, a nie symboliczne odniesienie do jakiegoś lokalnego oddziału). Jeśli dokonałeś zatwierdzeń w tej nienazwanej gałęzi, zawsze możesz utworzyć lokalną gałąź z bieżącego zatwierdzenia:** EDYCJA (przez redaktora nie autora) **
Znalazłem komentarz ukryty poniżej, który wydaje się unowocześniać tę odpowiedź:
nacisk na
git checkout origin/test
źródło
error: pathspec 'branch_name' did not match any file(s) known to git.
, powinieneś najpierw pobrać polecenie git.W takim przypadku prawdopodobnie chcesz utworzyć
test
oddział lokalny, który śledzitest
oddział zdalny :We wcześniejszych wersjach
git
potrzebna była wyraźna--track
opcja, ale jest to domyślna teraz, gdy rozgałęziasz się ze zdalnej gałęzi.źródło
Zaakceptowana odpowiedź nie działa dla Ciebie?
Chociaż pierwsza i wybrana odpowiedź jest technicznie poprawna , istnieje możliwość, że nie odzyskałeś jeszcze wszystkich obiektów i referencji ze zdalnego repozytorium. W takim przypadku pojawi się następujący błąd:
Rozwiązanie
Jeśli pojawi się ten komunikat, trzeba najpierw zrobić
git fetch origin
, gdzieorigin
to nazwa zdalnego repozytorium przed uruchomieniemgit checkout remote_branch
. Oto pełny przykład z odpowiedziami:Jak widać, uruchomione zostały
git fetch origin
pobrane wszystkie zdalne gałęzie, których jeszcze nie skonfigurowaliśmy do śledzenia na naszym komputerze lokalnym. Stamtąd, ponieważ mamy teraz odwołanie do zdalnego oddziału, możemy po prostu uruchomićgit checkout remote_branch
i zyskamy zalety zdalnego śledzenia.źródło
git checkout -b newbranch
działa również świetnie do tworzenia i pobierania nowego oddziału w oparciu o bieżący oddział.git ls-remote
a jedynym sposobem na faktyczne użycie jednego z nich jestgit checkout -b [branch] --track [remote/branch]
... i to pogit pull [remote] [branch]
pracy. To znaczy, pociągnął całą gałąź, ale nadal nie wymienia tego.git fetch other_remote only_branch
nadal pojawia sięfatal
błąd. Musisz to zrobićgit fetch other_remote
bez nazwy oddziału. Dziwny projekt.Wypróbowałem powyższe rozwiązanie, ale nie zadziałało. Wypróbuj to, działa:
Spowoduje to pobranie gałęzi zdalnej i utworzenie nowej gałęzi lokalnej (jeśli jeszcze nie istnieje) z nazwą
local_branch_name
i śledzenie w niej gałęzi zdalnej.źródło
Spowoduje to DWIM dla zdalnego źródła, którego nie wymieniono ( dokumentacja ):
Aby dodać nowego pilota, musisz najpierw wykonać następujące czynności:
Pierwszy mówi Git, że pilot istnieje, drugi zatwierdza.
źródło
Posługiwać się:
Inne odpowiedzi nie działają z nowoczesnym Gitem w mojej łagodnej sprawie. Być może trzeba będzie najpierw pociągnąć, jeśli gałąź zdalna jest nowa, ale nie sprawdziłem tej sprawy.
źródło
OK , odpowiedź jest łatwa ... Zasadniczo widzisz oddział, ale nie masz jeszcze lokalnej kopii! ...
Musisz do
fetch
oddziału ...Możesz po prostu pobrać, a następnie przejść do oddziału, użyj poniższego polecenia w jednym wierszu:
Stworzyłem również poniższy obrazek, abyś mógł podzielić się różnicami, zobaczyć, jak
fetch
działa, a także jak różni się odpull
:źródło
test
wygląda jak nowa gałąź, więc prawdopodobnie nie będzie obecna lokalnie. W przeciwnym razie możesz wyciągnąć go łatwiej za pomocą jednegogit pull
polecenia.fetch
bezpull
zmian pozostawić w pobranego kopii, ale nie w lokalnym oddziale, co prowadzi do lokalnego oddziału nie jest up-to-date?Aby sklonować repozytorium Git, wykonaj:
Powyższe polecenie sprawdza wszystkie gałęzie, ale tylko
master
gałąź zostanie zainicjowana. Jeśli chcesz sprawdzić inne oddziały, wykonaj:To polecenie sprawdza oddział zdalny, a nazwa oddziału lokalnego będzie taka sama jak oddziału zdalnego.
Jeśli chcesz zastąpić nazwę lokalnego oddziału przy kasie:
Teraz nazwa lokalnego oddziału to
enhancement
, ale nazwa oddziału zdalnego tofuture_branch
.Dokumentacja
źródło
master
, to nie zadziała.Możesz spróbować
lub
źródło
--track
nie są już potrzebne w nowszych wersjach git, ponieważ są ustawione domyślnie, jak wyjaśniono we wcześniejszej odpowiedzi .Najpierw musisz zrobić:
git fetch
# Jeśli nie wiesz o nazwie oddziałuPo drugie, możesz sprawdzić oddział zdalny w swoim lokalnym poprzez:
-b
utworzy nowy oddział o określonej nazwie z wybranego oddziału zdalnego.źródło
Używam następującego polecenia:
źródło
Polecenia
są równe
i wtedy
Oba stworzą
latest fixes_for_dev
zdevelopment
źródło
Jeśli gałąź znajduje się na czymś innym niż
origin
pilot, chcę wykonać następujące czynności:Spowoduje to wyewidencjonowanie
next
oddziału naupstream
zdalnym w oddziale lokalnym o nazwiesecond/next
. Co oznacza, że jeśli masz już lokalny oddział o nazwie next, nie spowoduje to konfliktu.źródło
git fetch && git checkout your-branch-name
źródło
żadna z tych odpowiedzi nie działała dla mnie. to działało:
git checkout -b feature/branch remotes/origin/feature/branch
źródło
git
podczas wywoływaniagit branch -a
polecenia, ale nie byłem tego pewien, więc po prostu użyłemgit checkout -b apps/FEATURE/branch origin/apps/FEATURE/branch
i wyglądało na to, że działa. Wiadomość:Branch 'apps/FEATURE/branch' set up to track remote branch 'apps/FEATURE/epicBranch' from 'origin'. Switched to a new branch 'apps/FEATURE/branch'
Utknąłem w sytuacji, widząc
error: pathspec 'desired-branch' did not match any file(s) known to git.
wszystkie powyższe sugestie. Jestem w wersji git 1.8.3.1.Więc to zadziałało dla mnie :
Wyjaśnienie jest takie, że zauważyłem, że podczas pobierania zdalnej gałęzi został pobrany do FETCH_HEAD:
źródło
Po prostu uruchom
git checkout
z nazwą zdalnego oddziału. Git automatycznie utworzy lokalną gałąź, która śledzi zdalną:Jeśli jednak nazwa tej gałęzi zostanie znaleziona w więcej niż jednym pilocie, to nie zadziała, ponieważ Git nie wie, którego użyć. W takim przypadku możesz użyć:
lub
W 2.19 Git nauczył się
checkout.defaultRemote
konfiguracji, która określa domyślną wartość domyślną pilota przy rozwiązywaniu takiej niejednoznaczności.źródło
git branch -r
mówi, że nazwa obiektu jest niepoprawna, ponieważ tej nazwy oddziału nie ma na lokalnej liście oddziału Git. Zaktualizuj listę lokalnych oddziałów od początku o:A następnie spróbuj ponownie sprawdzić swój zdalny oddział.
To zadziałało dla mnie.
Wierzę, że
git fetch
wciąga wszystkie odległe gałęzie, czego nie chciał oryginalny plakat.źródło
git remote update
pobierze również wszystkie odległe gałęzie .The
git remote show <origin name>
Komenda pokaże wszystkie branże (w tym oddziałów un-śledzone). Następnie możesz znaleźć nazwę zdalnego oddziału, którą musisz pobrać.Przykład:
Wykonaj następujące kroki, aby pobrać zdalne gałęzie:
Przykład:
źródło
$ git clone -b release --single-branch --depth 5 https://github.com/user/repo.git
Wron't information$ git remote show origin
nie zawiera wszystkich zdalnych oddziałów z klonowanymi repozytoriami z pojedynczym odgałęzieniem.Pobierz ze zdalnego i sprawdź oddział.
Na przykład:
źródło
Inni faceci i dziewczęta podają rozwiązania, ale może powiem ci dlaczego.
Does nothing
nie równa siędoesn't work
, więc myślę, że po wpisaniu „git checkout test” w terminalu i naciśnięciu klawisza enter, nie pojawia się żaden komunikat ani błąd. Czy mam rację?Jeśli odpowiedź brzmi „tak”, mogę podać przyczynę.
Przyczyną jest to, że w drzewie roboczym znajduje się plik (lub folder) o nazwie „test”.
Podczas
git checkout xxx
analizyxxx
nazwę gałęzi, ale nie ma żadnej gałęzi o nazwie test.xxx
jest ścieżką i na szczęście (lub niestety) istnieje plik o nazwie test. Więcgit checkout xxx
pomocą odrzucić żadnej modyfikacji wxxx
pliku.xxx
, Git spróbuje utworzyćxxx
zgodnie z niektórymi regułami. Jedną z reguł jest utworzenie gałęzi o nazwie,xxx
jeśliremotes/origin/xxx
istnieje.źródło
Aby uzyskać nowo utworzone oddziały
Aby przejść do innej gałęzi
źródło
Możesz rozpocząć śledzenie wszystkich zdalnych gałęzi za pomocą następującego skryptu Bash:
Oto także wersja jednowierszowa:
źródło
git checkout -b „Branch_name” [B oznacza Utwórz oddział lokalny]
oddział git - wszystkie
git checkout -b „Twoja nazwa oddziału”
oddział git
pomyślne pobranie z gałęzi głównej do gałęzi deweloperskiej
źródło
aby uzyskać wszystkie zdalne oddziały, użyj tego:
następnie kasa do oddziału:
źródło
Użyj,
fetch
aby wyciągnąć cały pilotAby wyświetlić listę zdalnych oddziałów:
Aby wyświetlić listę wszystkich swoich oddziałów
Do kasy / zmiany oddziału
źródło
git branch -l
i nie pokazano żadnej zdalnej gałęzi.git pull --all
lubgit fetch --all
git branch -l
nadal pokazuje tylko lokalne oddziały. Wygląda na to, że działa dokładnie tak samo, jakgit branch
bez niego-l
, więc z jakiego powodu-l
?master
nie jest zdalną gałęzią.-l
flaga dla listy. Można użyć--list
teżWydaje nam się, że
remote.origin.fetch
konfiguracja spowodowała problem. Dlatego nie widzieliśmy żadnych innych zdalnych gałęzimaster
, więcgit fetch [--all]
nie pomogliśmy. Anigit checkout mybranch
anigit checkout -b mybranch --track origin/mybranch
nie działało, choć z pewnością było na odległość.Poprzednia konfiguracja mogła
master
być pobierana tylko:Napraw to, używając
*
i pobierz nowe informacje z miejsca pochodzenia:Teraz możemy
git checkout
zdalnie oddział lokalnie.Nie mam pojęcia, jak ta konfiguracja zakończyła się w naszym lokalnym repozytorium.
źródło
Jeśli nazwa zdalnego oddziału zaczyna się od specjalnych znaków, musisz użyć pojedynczych cudzysłowów wokół polecenia kasowania, w przeciwnym razie git nie będzie wiedział, o której gałęzi mówisz.
Na przykład próbowałem pobrać zdalną gałąź o nazwie as,
#9773
ale polecenie nie działało poprawnie, jak pokazano na poniższym obrazku:Z jakiegoś powodu zastanawiałem się, czy ostry symbol (#) może mieć z tym coś wspólnego, a potem spróbowałem otoczyć nazwę oddziału pojedynczymi cudzysłowami, jak
'#9773'
rathen, niż na#9773
szczęście i na szczęście zadziałało dobrze.źródło
#
znak służy do komentowania, więc wszystko po nim#
zostanie zignorowane. To jest sprawa powłoki, a nie coś specyficznego dla git. Używanie cudzysłowu z odwrotnym ukośnikiem przed#
powinno wystarczyć.Postępuj zgodnie z poleceniem, aby utworzyć pusty folder. Wpisz to i użyj tego polecenia:
źródło