Jak mogę sprawdzić zdalny oddział Git?

6711

Ktoś popchnął oddział o nazwie testz git push origin testdo wspólnego repozytorium. Widzę gałąź z git branch -r.

Teraz próbuję sprawdzić zdalny testoddział.

Próbowałem:

  • git checkout test który nic nie robi

  • git checkout origin/testdaje * (no branch). Co jest mylące. Jak mogę być w „bez oddziału”?

Jak mogę sprawdzić zdalny oddział Git?

Juri Glass
źródło
9
@inger Ale nie obejmuje to możliwości zmiany nazwy nowego oddziału lokalnego (jeśli chcesz
ustawić
15
Myślę, że ten wątek jest nieprzydatny. Wydaje się, że nic nie działa, pierwotne pytanie wydaje się zagubione w wielu odpowiedziach. Przeczytałem każde słowo, wypróbowałem wszystko poniżej i nie mam pojęcia, jak zrobić to, co chce OP.
Tony Ennis
6
Polecenia git nie są intuicyjne na początek, dodaj zmiany wprowadzone w ostatnich wersjach do miksu, a masz tę stronę ...
Christophe Roussy
14
Czuję, że biorę szalone pigułki. Próbuję wyewidencjonować oddział z upstreamnie tylko origin, 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/testDziała trzeci ( ). Cieszę się, że pierwsze 2 mają 20x więcej głosów ...
dwanderson,
4
Być może masz plik o nazwie „test” w swoim drzewie roboczym, zobacz stackoverflow.com/a/45006389/792416 .
oldman

Odpowiedzi:

9150

Aktualizacja

Odpowiedź Jakuba poprawia się w tej kwestii. W wersjach Git ≥ 1.6.6 z tylko jednym pilotem możesz po prostu:

git fetch
git checkout test

Jak zauważył użytkownik masukomi w komentarzu, git checkout testNIE będzie działać w nowoczesnym git, jeśli masz wiele pilotów. W takim przypadku użyj

git checkout -b test <name of remote>/test

lub stenografia

git checkout -t <name of remote>/test

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:

git fetch origin

Spowoduje to pobranie dla ciebie wszystkich zdalnych gałęzi. Możesz zobaczyć oddziały dostępne do realizacji transakcji za pomocą:

git branch -v -a

Mając zdalne gałęzie w ręku, musisz teraz sprawdzić gałąź, którą jesteś zainteresowany, dając lokalną kopię roboczą:

git checkout -b test origin/test
Hallski
źródło
398
Aby rozwinąć tę kwestię: git nie pozwala ci pracować na czyichś oddziałach. Możesz pracować tylko na własną rękę. Więc jeśli chcesz dodać do czyjejś gałęzi, musisz utworzyć własną „kopię” tej gałęzi, co właśnie robi powyższe polecenie (cóż, tworzy gałąź i sprawdza ją również).
Dan Molding
139
Jeśli jest to nowa zdalna gałąź, może być konieczne, aby git fetchto zrobić, aby git był tego świadomyorigin/test
Neil Sarkar
56
... i zrobiłbyś to zgit fetch origin test
Andrew
22
Błąd: „Git Checkout: aktualizowanie ścieżek jest niezgodne z przełączaniem gałęzi. Czy zamierzałeś origin/testpobrać, którego nie można rozwiązać jako zatwierdzenia?”
Xeoncross,
85
git checkout testNIE 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ć.
masukomi
1256

Sidenote: Dzięki nowoczesnemu Gitowi (> = 1.6.6 ) możesz używać tylko

git checkout test

(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)W git branchdrodze 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:

git checkout -b test HEAD

** EDYCJA (przez redaktora nie autora) **

Znalazłem komentarz ukryty poniżej, który wydaje się unowocześniać tę odpowiedź:

@Dennis: git checkout, na przykład git checkout origin / test results w odłączonym HEAD / nienazwanej gałęzi, podczas gdy git checkout test lub git checkout -b test origin / wyniki testu w lokalnym oddziale testowym (ze zdalnym śledzeniem pochodzenia / testu oddziału jako upstream ) - Jakub Narębski 9 stycznia 14 o 8:17

nacisk na git checkout origin/test

Jakub Narębski
źródło
33
Nic dziwnego, ale ta wersja została wydana w ciągu ostatnich kilku lat - znajomość tej składni może zaoszczędzić dużo czasu, ponieważ wciąż jest wiele starych dokumentacji i wątków komentarzy, które sugerują starszą metodę.
Curtis
10
„modern git” - dla przypomnienia, (w przybliżeniu) do jakiej wersji się odnosisz? Czasami musimy pracować na systemach z starszymi dystrybucjami.
Craig McQueen,
5
„nowoczesny git” w tym kontekście to git 1.6.6
Bobby Norton
10
@aidan Jeśli otrzymasz taką odpowiedź error: pathspec 'branch_name' did not match any file(s) known to git., powinieneś najpierw pobrać polecenie git.
Dennis
6
Używanie gita w wersji 1.8.3.msysgit.0 i to nie działa dla mnie - nie pasuje do żadnego pliku (ów) znanego z git - Zrobiłem wiele
ściągnięć
564

W takim przypadku prawdopodobnie chcesz utworzyć testoddział lokalny, który śledzi testoddział zdalny :

$ git branch test origin/test

We wcześniejszych wersjach gitpotrzebna była wyraźna --trackopcja, ale jest to domyślna teraz, gdy rozgałęziasz się ze zdalnej gałęzi.

ndim
źródło
15
Spowoduje to utworzenie lokalnego oddziału bez przełączania się na niego.
Alex Skrypnyk
2
Chociaż zgubiłem się: niejednoznaczna nazwa obiektu: „origin / dev” - gdzie gałąź „dev” na początku zdecydowanie istnieje - ale przypadkowo utworzyłem gałąź o nazwie „origin / dev” na mojej maszynie (w moich poprzednich głupich próbach żeby to
naprawić
1
Daje mi to błąd: nie udało mi się przesłać niektórych odnośników do podpowiedzi: Aktualizacje zostały odrzucone, ponieważ za zdalną wskazówką: odpowiednikiem znajduje się wypchnięta wskazówka gałęzi. Sprawdź ten oddział i scal zdalną wskazówkę: (np. „Git pull”) przed ponownym pchnięciem. podpowiedź: Aby uzyskać szczegółowe informacje, zobacz „Uwaga na temat szybkiego przewijania” w „git push --help”.
pal4life
475

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:

$ git checkout -b remote_branch origin/remote_branch

fatal: git checkout: aktualizacja ścieżek jest niezgodna z przełączaniem gałęzi.
Czy masz zamiar pobrać „origin / remote_branch”, którego nie można rozpoznać jako zatwierdzenie?

Rozwiązanie

Jeśli pojawi się ten komunikat, trzeba najpierw zrobić git fetch origin, gdzie originto nazwa zdalnego repozytorium przed uruchomieniem git checkout remote_branch. Oto pełny przykład z odpowiedziami:

$ git fetch origin
remote: Counting objects: 140, done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 69 (delta 36), reused 66 (delta 33)
Unpacking objects: 100% (69/69), done.
From https://github.com/githubuser/repo-name
   e6ef1e0..5029161  develop    -> origin/develop
 * [new branch]      demo       -> origin/demo
   d80f8d7..359eab0  master     -> origin/master

$ git checkout demo
Branch demo set up to track remote branch demo from origin.
Switched to a new branch 'demo'

Jak widać, uruchomione zostały git fetch originpobrane 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_branchi zyskamy zalety zdalnego śledzenia.

Corey Ballou
źródło
2
Dodam notatkę, jeśli masz osobny oddział lokalnie: Upewnij się, że powiąłeś to ze zdalnym repozytorium, używając „git zdalnego dodawania źródła [ścieżka_do_tworzenia / nazwa_programu.git]”. Następnie użyj „git fetch origin”, gdzie „origin” oznacza repozytorium pochodzenia, z którym utworzono powiązanie.
elliotrock
git checkout -b newbranchdziała również świetnie do tworzenia i pobierania nowego oddziału w oparciu o bieżący oddział.
Linus
2
Myślę, że jest to najbardziej aktualne (ciągle zmienia $ @ #! Ing!). Git 2.5.5 Znalazłem jedyny sposób, aby rzeczywiście zobaczyć odległe gałęzie, git ls-remotea jedynym sposobem na faktyczne użycie jednego z nich jest git checkout -b [branch] --track [remote/branch]... i to po git pull [remote] [branch] pracy. To znaczy, pociągnął całą gałąź, ale nadal nie wymienia tego.
delikatna
a kiedy ta odpowiedź też nie działa, zobacz .
eis
aby dodać, jeśli git fetch other_remote only_branchnadal pojawia się fatalbłąd. Musisz to zrobić git fetch other_remotebez nazwy oddziału. Dziwny projekt.
est
258

Wypróbowałem powyższe rozwiązanie, ale nie zadziałało. Wypróbuj to, działa:

git fetch origin 'remote_branch':'local_branch_name'

Spowoduje to pobranie gałęzi zdalnej i utworzenie nowej gałęzi lokalnej (jeśli jeszcze nie istnieje) z nazwą local_branch_namei śledzenie w niej gałęzi zdalnej.

Sahil kalra
źródło
37
Działa to dla mnie, gdy ani git fetch origin ani git zdalna aktualizacja nie utworzyły lokalnych oddziałów. Nie jestem pewien dlaczego.
Godsmith
4
To był najbardziej bezpośredni sposób, aby osiągnąć to, czego potrzebowałem, czyli użyć zdalnej gałęzi (nie master), aby utworzyć nową gałąź.
Roralee,
7
Działa bezproblemowo, zwłaszcza po sklonowaniu jednej gałęzi ze zdalnego z wieloma gałęziami.
Alex C
7
to również działało dla mnie, gdzie nie zaakceptowano odpowiedzi i innych wysoko głosowanych. Moja wersja git to 2.5.0
pdepmcp
5
Czy ktoś ma pojęcie, dlaczego to działa, gdy wszystko inne nie działa? (Jestem na git 2.13.0)
Nathan Arthur
108

Spowoduje to DWIM dla zdalnego źródła, którego nie wymieniono ( dokumentacja ):

$ git checkout -t remote_name/remote_branch

Aby dodać nowego pilota, musisz najpierw wykonać następujące czynności:

$ git remote add remote_name location_of_remote
$ git fetch remote_name

Pierwszy mówi Git, że pilot istnieje, drugi zatwierdza.

Tacaswell
źródło
104

Posługiwać się:

git checkout -b <BRANCH-NAME> <REMOTE-NAME>/<BRANCH-NAME>

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.

matanster
źródło
2
Czy zdajesz sobie sprawę, że jest to fragment tej odpowiedzi
Thomas Ayoub
14
Patrząc na to teraz, nakładają się na siebie. Tylko moje jest zwięzłe i mówi ci, co robić, a nie opowiadać historię. Zakładam, że może to być bardziej przydatne, szczególnie w dzisiejszych wersjach gita. Możesz to zagłosować, jeśli uważasz, że to zła odpowiedź.
matanster
1
git fetch to bezpieczna opcja. Spróbuj pobrać przed użyciem pull. Oba pobierają zdalną zawartość, ale chociaż pobieranie nie zmienia stanu lokalnego, pull natychmiast zmieni stan lokalny.
Peter Szalay,
89

OK , odpowiedź jest łatwa ... Zasadniczo widzisz oddział, ale nie masz jeszcze lokalnej kopii! ...

Musisz do fetchoddziału ...

Możesz po prostu pobrać, a następnie przejść do oddziału, użyj poniższego polecenia w jednym wierszu:

git fetch && git checkout test

Stworzyłem również poniższy obrazek, abyś mógł podzielić się różnicami, zobaczyć, jak fetchdziała, a także jak różni się od pull:

ściągnij

Alireza
źródło
@DmitriZaitsev tak, to zadziała, jeśli istnieje tam gałąź zdalna i wykonasz pobieranie, otrzymasz gałąź lokalnie ... git fetch & & git checkout test .. Więc to działa, chyba że nie ma zdalnej gałęzi, ale pytanie mówi, że jest tam już zdalny oddział ...
Alireza,
Sposób, w jaki widzę pytanie, testwygląda jak nowa gałąź, więc prawdopodobnie nie będzie obecna lokalnie. W przeciwnym razie możesz wyciągnąć go łatwiej za pomocą jednego git pullpolecenia.
Dmitri Zaitsev
@DmitriZaitsev, tak, dlatego powiedziałem git fetch, że sprawdzanie zdalnych gałęzi, które właśnie utworzyły, pull może przynieść inne niechciane rzeczy, ale fetch udostępnia wszystkie gałęzie, jeśli masz już repo lokalnie ...
Alireza
Nie będzie fetchbez pullzmian pozostawić w pobranego kopii, ale nie w lokalnym oddziale, co prowadzi do lokalnego oddziału nie jest up-to-date?
Dmitri Zaitsev,
56

Aby sklonować repozytorium Git, wykonaj:

git clone <either ssh url /http url>

Powyższe polecenie sprawdza wszystkie gałęzie, ale tylko mastergałąź zostanie zainicjowana. Jeśli chcesz sprawdzić inne oddziały, wykonaj:

git checkout -t origin/future_branch (for example)

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:

git checkout -t -b enhancement origin/future_branch

Teraz nazwa lokalnego oddziału to enhancement, ale nazwa oddziału zdalnego to future_branch.

Dokumentacja

Madhan Ayyasamy
źródło
git clone <albo ssh url / http url> - działa idealnie dla mnie
Kmeixner
Tak, masz rację. Dzięki za informacje, wkrótce je zaktualizuję @warvariuc
Madhan Ayyasamy
Jeśli pilot nie ma master, to nie zadziała.
polkovnikov.ph
36

Możesz spróbować

git fetch remote
git checkout --track -b local_branch_name origin/branch_name

lub

git fetch
git checkout -b local_branch_name origin/branch_name
uma
źródło
2
Informacje FYI --tracknie są już potrzebne w nowszych wersjach git, ponieważ są ustawione domyślnie, jak wyjaśniono we wcześniejszej odpowiedzi .
33

Najpierw musisz zrobić:

git fetch # Jeśli nie wiesz o nazwie oddziału

git fetch origin branch_name

Po drugie, możesz sprawdzić oddział zdalny w swoim lokalnym poprzez:

git checkout -b branch_name origin/branch_name

-b utworzy nowy oddział o określonej nazwie z wybranego oddziału zdalnego.

Mohideen bin Mohammed
źródło
Nie rozumiem -b. Jeśli możesz zrobić „Git Checkout Master”, dlaczego nie możesz zrobić „Git Checkout Origin / Test”?
John Little
-b dla nowego oddziału, który jest od pochodzenia / mistrza
Mohideen bin Mohammed
28

Używam następującego polecenia:

git checkout --track origin/other_remote_branch
priyankvex
źródło
13
Ta odpowiedź byłaby o wiele bardziej przydatna, jeśli wyjaśnisz, dlaczego używasz jej w ten sposób. tzn. dlaczego ktoś powinien używać „--track” i tak dalej ...
Matt Friedman,
27

Polecenia

git fetch --all
git checkout -b <ur_new_local_branch_name> origin/<Remote_Branch_Name>

są równe

 git fetch --all

i wtedy

 git checkout -b fixes_for_dev origin/development

Oba stworzą latest fixes_for_devzdevelopment

sreekumar
źródło
24

Jeśli gałąź znajduje się na czymś innym niż originpilot, chcę wykonać następujące czynności:

$ git fetch
$ git checkout -b second/next upstream/next

Spowoduje to wyewidencjonowanie nextoddziału na upstreamzdalnym w oddziale lokalnym o nazwie second/next. Co oznacza, że ​​jeśli masz już lokalny oddział o nazwie next, nie spowoduje to konfliktu.

$ git branch -a
* second/next
  remotes/origin/next
  remotes/upstream/next
Kris
źródło
18

git fetch && git checkout your-branch-name

Inder Kumar Rathore
źródło
18

żadna z tych odpowiedzi nie działała dla mnie. to działało:

git checkout -b feature/branch remotes/origin/feature/branch

Brianyang
źródło
1
dzięki. Zastanawiałem się, czy muszę użyć pełnej ścieżki ( piloty / pochodzenie / funkcja / gałąź) ), którą widziałem gitpodczas wywoływania git branch -apolecenia, ale nie byłem tego pewien, więc po prostu użyłem git checkout -b apps/FEATURE/branch origin/apps/FEATURE/branchi 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'
Chris22
18

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 :

git fetch origin desired-branch
git checkout -b desired-branch FETCH_HEAD

Wyjaśnienie jest takie, że zauważyłem, że podczas pobierania zdalnej gałęzi został pobrany do FETCH_HEAD:

$ git fetch origin desired-branch
From github.com:MYTEAM/my-repo
    * branch            desired-branch -> FETCH_HEAD
Alisa
źródło
17

Po prostu uruchom git checkoutz nazwą zdalnego oddziału. Git automatycznie utworzy lokalną gałąź, która śledzi zdalną:

git fetch
git checkout test

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ć:

git checkout --track origin/test

lub

git checkout -b test origin/test

W 2.19 Git nauczył się checkout.defaultRemotekonfiguracji, która określa domyślną wartość domyślną pilota przy rozwiązywaniu takiej niejednoznaczności.

Eugene Yarmash
źródło
16

git branch -rmó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:

git remote update

A następnie spróbuj ponownie sprawdzić swój zdalny oddział.

To zadziałało dla mnie.

Wierzę, że git fetchwciąga wszystkie odległe gałęzie, czego nie chciał oryginalny plakat.

webdevguy
źródło
2
FYI, git remote update pobierze również wszystkie odległe gałęzie .
13

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:

$ git remote show origin

Wykonaj następujące kroki, aby pobrać zdalne gałęzie:

git fetch <origin name> <remote branch name>:<local branch name>
git checkout <local branch name > (local branch name should the name that you given fetching)

Przykład:

$ git fetch origin test:test
$ git checkout test
Tuszan
źródło
@hallski odpowiedział, że nie działa wersja 2.15.1, ale zmniejszyłem wagę pliku .git klon tylko 1 gałąź i historię filtrów z flagą --depth. na przykład $ git clone -b release --single-branch --depth 5 https://github.com/user/repo.gitWron't information $ git remote show originnie zawiera wszystkich zdalnych oddziałów z klonowanymi repozytoriami z pojedynczym odgałęzieniem.
Qh0stM4N
10

Pobierz ze zdalnego i sprawdź oddział.

git fetch <remote_name> && git checkout <branch_name> 

Na przykład:

git fetch origin && git checkout feature / XYZ-1234-Add-alerts

Pranaw
źródło
9

Inni faceci i dziewczęta podają rozwiązania, ale może powiem ci dlaczego.

test kasy git, który nic nie robi

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 xxxanalizy

  1. Git patrzy xxx nazwę gałęzi, ale nie ma żadnej gałęzi o nazwie test.
  2. Wtedy Git myśli, że xxxjest ścieżką i na szczęście (lub niestety) istnieje plik o nazwie test. Więc git checkout xxxpomocą odrzucić żadnej modyfikacji wxxx pliku.
  3. Jeśli nie ma też pliku o nazwie xxx, Git spróbuje utworzyć xxxzgodnie z niektórymi regułami. Jedną z reguł jest utworzenie gałęzi o nazwie, xxxjeśli remotes/origin/xxxistnieje.
starzec
źródło
dzięki, próbowałem dowiedzieć się, dlaczego git nic nie zrobił.
Mike R
8

Aby uzyskać nowo utworzone oddziały

git fetch

Aby przejść do innej gałęzi

git checkout BranchName
Hasib Kamal
źródło
6

Możesz rozpocząć śledzenie wszystkich zdalnych gałęzi za pomocą następującego skryptu Bash:

#!/bin/bash
git fetch --all
for branch in `git branch -r --format="%(refname:short)" | sed 's/origin\///'`
  do git branch -f --track "$branch" "origin/$branch"
done

Oto także wersja jednowierszowa:

git fetch --all; for branch in `git branch -r --format="%(refname:short)" | sed 's/origin\///'`; do git branch --track "$branch" "origin/$branch" ; done ;
OzzyCzech
źródło
5

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

wprowadź opis zdjęcia tutaj

Keshav Gera
źródło
git checkout -b „Branch_name” [B oznacza Utwórz oddział lokalny]
Keshav Gera
3

aby uzyskać wszystkie zdalne oddziały, użyj tego:

git fetch --all

następnie kasa do oddziału:

git checkout test
zahra
źródło
2

Użyj, fetchaby wyciągnąć cały pilot

   git fetch --all

Aby wyświetlić listę zdalnych oddziałów:

   git branch -r

Aby wyświetlić listę wszystkich swoich oddziałów

   git branch -l
   >>outpots like-
     * develop
       test
       master

Do kasy / zmiany oddziału

   git checkout master
Nasir Khan
źródło
Próbowałem git branch -li nie pokazano żadnej zdalnej gałęzi.
Dmitri Zaitsev
użyj git pull --alllubgit fetch --all
Nasir Khan
Tak, a potem git branch -l nadal pokazuje tylko lokalne oddziały. Wygląda na to, że działa dokładnie tak samo, jak git branchbez niego -l, więc z jakiego powodu -l?
Dmitri Zaitsev
Również twoja odpowiedź nie odpowiada na pytanie - masternie jest zdalną gałęzią.
Dmitri Zaitsev
-lflaga dla listy. Można użyć --listteż
Nasir Khan
2

Wydaje nam się, że remote.origin.fetchkonfiguracja spowodowała problem. Dlatego nie widzieliśmy żadnych innych zdalnych gałęzi master, więc git fetch [--all]nie pomogliśmy. Ani git checkout mybranchanigit checkout -b mybranch --track origin/mybranch nie działało, choć z pewnością było na odległość.

Poprzednia konfiguracja mogła masterbyć pobierana tylko:

$ git config --list | grep fetch
remote.origin.fetch=+refs/heads/master:refs/remotes/origin/master

Napraw to, używając *i pobierz nowe informacje z miejsca pochodzenia:

$ git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'

$ git fetch
...
 * [new branch] ...
...

Teraz możemy git checkoutzdalnie oddział lokalnie.

Nie mam pojęcia, jak ta konfiguracja zakończyła się w naszym lokalnym repozytorium.

hzpc-joostk
źródło
1
To rozwiązało dla mnie odkąd sklonowałem jedną gałąź
Pontus Holmbom
2

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, #9773ale polecenie nie działało poprawnie, jak pokazano na poniższym obrazku:

wprowadź opis zdjęcia tutaj

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 #9773szczęście i na szczęście zadziałało dobrze.

$ git checkout -b '#9773' origin/'#9773'
Ulisses Alves
źródło
W wielu powłokach uniksowych #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ć.
Paulo Scardine,
1

Postępuj zgodnie z poleceniem, aby utworzyć pusty folder. Wpisz to i użyj tego polecenia:

saifurs-Mini:YO-iOS saifurrahman$ git clone your_project_url
Cloning into 'iPhoneV1'...
remote: Counting objects: 34230, done.
remote: Compressing objects: 100% (24028/24028), done.
remote: Total 34230 (delta 22212), reused 15340 (delta 9324)
Receiving objects: 100% (34230/34230), 202.53 MiB | 294.00 KiB/s, done.
Resolving deltas: 100% (22212/22212), done.
Checking connectivity... done.
saifurs-Mini:YO-iOS saifurrahman$ cd iPhoneV1/
saifurs-Mini:iPhoneV1 saifurrahman$ git checkout 1_4_0_content_discovery
Branch 1_4_0_content_discovery set up to track remote branch 1_4_0_content_discovery from origin.
Switched to a new branch '1_4_0_content_discovery'
Mehedi Hasan
źródło