Pobierz zdalną gałąź Git Fetch

2260

Mój kolega i ja pracujemy nad tym samym repozytorium. Rozgałęziliśmy go na dwie gałęzie, każda technicznie dla różnych projektów, ale mają one podobieństwa, więc czasami będziemy chcieli wrócić do * masterz branch.

Mam jednak branch. W jaki sposób mój kolega może specjalnie wykorzystać ten oddział?

A git clonez repozytorium nie wydaje się tworzyć gałęzi lokalnie dla niego, chociaż widzę, jak działają na bieżąco po naciśnięciu mojego końca.

Poza tym, kiedy pierwotnie tworzyłem oddział, zrobiłem to -b checkout. Czy to robi dużą różnicę?

$ git branch -r
origin/HEAD -> origin/master
origin/daves_branch
origin/discover
origin/master

$ git fetch origin discover
$ git checkout discover

To są polecenia, które uruchomiłem. Ale to na pewno nie działa.

Chcę móc sprawdzić tę gałąź, a następnie wypchnąć i zatwierdzić tylko zmiany gałęzi od różnych współpracowników lub stacji roboczych .

David
źródło
9
możliwy duplikat zdalnego oddziału usługi git Checkout
Andrew Marshall,
33
Użyłem:, git fetch --allNastępnie, aby wyświetlić wszystkie gałęzie git branchgit checkout nameofnewbranch
:,
Możliwy duplikat Jak sprawdzić zdalny oddział Git?
DaveyDaveDave
6
git fetch origin discover:discover && git checkout discover
Gayan Weerakutti

Odpowiedzi:

3056

Musisz utworzyć oddział lokalny, który śledzi oddział zdalny. Następujące polecenie utworzy lokalną gałąź o nazwie daves_branch , śledząc początek zdalnej gałęzi / daves_branch . Po wprowadzeniu zmian oddział zdalny zostanie zaktualizowany.

W przypadku najnowszych wersji Git:

git checkout --track origin/daves_branch

--trackjest skrótem dla git checkout -b [branch] [remotename]/[branch]gdzie [remotename] jest źródło w tym przypadku, a [gałąź] w dwa takie same, daves_branch w tym przypadku.

W przypadku Git 1.5.6.5 potrzebujesz tego:

git checkout --track -b daves_branch origin/daves_branch

W przypadku Git 1.7.2.3 i nowszych to wystarczy (mogło zacząć się wcześniej, ale jest to najwcześniejsze potwierdzenie, jakie mogłem szybko znaleźć):

git checkout daves_branch

Zauważ, że w najnowszych wersjach Gita to polecenie nie utworzy lokalnego oddziału i wprowadzi cię w stan „odłączonej HEAD”. Jeśli chcesz mieć oddział lokalny, skorzystaj z --trackopcji.

Pełne szczegóły znajdują się tutaj: 3.5 Git Branching - Oddziały zdalne, Oddziały śledzące

ralphtheninja
źródło
133
„git fetch”, aby upewnić się, że twoje repozytorium jest aktualizowane zdalnymi referencjami i „git checkout --track origin / Discover” powinno wystarczyć. Następnie możesz zatwierdzić do tej gałęzi i wykonać polecenie „git push”, aby zsynchronizować pilota ze swoimi zmianami.
ralphtheninja
33
Próbowałem tego i otrzymałem komunikat „fatal: git checkout: aktualizacja ścieżek jest niezgodna z przełączaniem gałęzi. Czy miałeś zamiar pobrać„ upstream / develop ”, którego nie można rozwiązać jako zatwierdzenia?”. czy robię coś źle?
Neil Barnwell
42
Wygląda git 1.5.6.5 potrzebuje tego zamiast: git checkout -b --track pochodzenia / daves_branch
Charlie
35
Zrobiło to dla mnie bałagan, stworzyło lokalną gałąź o nazwie origin / <branch>, która jest teraz dwuznaczna w stosunku do zdalnej gałęzi origin / <branch> i nie wiem, jak pozbyć się szalonej gałęzi lokalnej!
Alan Moore,
24
Musisz jawnie dodać nazwę oddziału lokalnego, w przeciwnym razie git utworzy nowy oddział lokalny z pełną ścieżką oddziału, jak podano powyżej @AlanMoore i @ derekmx271:git checkout -b --track daves_branch origin/daves_branch
Mike Scott,
961

Użyłem, fetcha następnie checkout...

git fetch <remote> <rbranch>:<lbranch>
git checkout <lbranch>

... gdzie <rbranch>jest zdalna gałąź lub referencja źródłowa i <lbranch>jest jeszcze nieistniejącą referencją lokalną lub docelową, którą chcesz śledzić i którą prawdopodobnie chcesz nazwać tak samo jak zdalna gałąź lub referencja źródłowa. Wyjaśniono to w opcjach w objaśnieniu <refspec>.

Git jest tak inteligentny, że automatycznie wykonuje pierwsze polecenie, jeśli kliknę tabulatorem po pierwszych kilku literach zdalnej gałęzi. Oznacza to, że nie muszę nawet nazywać gałęzi lokalnej, Git automatycznie kopiuje dla mnie nazwę gałęzi zdalnej. Dzięki Git!

Również, jak pokazuje odpowiedź w tym podobnym wpisie Przepełnienie stosu , jeśli nie podasz nazwy lokalnego oddziału fetch, możesz go nadal utworzyć, gdy go wyewidencjonujesz, używając -bflagi. Oznacza to, że git fetch <remote> <branch> następuje git checkout -b <branch> <remote>/<branch>dokładnie to samo, co moja pierwotna odpowiedź. I oczywiście, jeśli twoje repozytorium ma tylko jeden pilot, możesz to zrobić git checkout <branch>po tym, fetcha on utworzy dla ciebie lokalny oddział. Na przykład właśnie sklonowałeś repozytorium i chcesz sprawdzić dodatkowe gałęzie ze zdalnego.

Uważam, że część dokumentacji fetchmogła zostać skopiowana dosłownie z pull. W szczególności sekcja <refspec>w opcjach jest taka sama. Jednak nie wierzę, że tak się fetchstanie merge, więc jeśli pozostawisz pustą stronę docelową jelita grubego, fetch nie powinieneś nic robić .

UWAGA: git fetch <remote> <refspec>jest skrótem, w git fetch <remote> <refspec>:związku z czym nic nie zrobiłby, ale git fetch <remote> <tag>jest tym samym, git fetch <remote> <tag>:<tag>co powinno skopiować pilota <tag>lokalnie.

Sądzę, że jest to pomocne tylko wtedy, gdy chcesz skopiować zdalny oddział lokalnie, ale niekoniecznie sprawdź go od razu. W przeciwnym razie użyłbym teraz zaakceptowanej odpowiedzi , która jest szczegółowo wyjaśniona w pierwszej części opisu kasy, a następnie w sekcji opcji pod wyjaśnieniem --track, ponieważ jest to jedna linijka. Cóż ... coś w stylu jednej linijki, ponieważ nadal będziesz musiał biegać git fetch <remote>pierwszy.

FYI: Kolejność <refspecs>(source: destination) wyjaśnia dziwną metodę pre Git 1.7 do usuwania zdalnych gałęzi . Oznacza to, że nie wrzucaj nic do refspec przeznaczenia.

Mark Mikofski
źródło
8
Zakładasz, że autouzupełnianie Git zostało skonfigurowane. code-worrier.com/blog/autocomplete-git
antonagestam
2
Pomogło mi to przenieść zdalny kod do lokalnego oddziału. Jednak mój lokalny oddział nie wyśledził zdalnego oddziału.
Aknosis
1
Z jakiegoś powodu w git fetch remote branchogóle nie dodałem głowy oddziału, chociaż wszystkie referencje zostały pobrane, więc kiedy próbowałem wykonać kroki w zaakceptowanej odpowiedzi, dostałem błąd pathspec did not match any file(s) known to git., ale rbranch:lbranchpodejście zadziałało. Co ciekawe, pobrał również wszystkie tagi, które rozpoczęły się z tym samym prefiksem, tak jakby to był symbol wieloznaczny ( rbranch*).
haridsv
3
Nit: git nie wykonuje autouzupełniania, robi to powłoka bash.
zalegalizować
1
FWIW, myślę, że różnica między tą odpowiedzią a odpowiedzią zaakceptowaną polega na tym, że ta mówi ci, abyś wykonał fetchpolecenie. Ta zaakceptowana odpowiedź ma jednak sens, ponieważ OP zauważa, że ​​już dokonał pobrania. Taki przynajmniej problem spotkałem.
tenor528,
373

Jeśli próbujesz „pobrać” nową gałąź zdalną (która istnieje tylko na pilocie, ale nie lokalnie), oto, czego będziesz potrzebować:

git fetch origin
git checkout --track origin/<remote_branch_name>

Zakłada się, że chcesz pobrać z miejsca pochodzenia . Jeśli nie, wymień pochodzenie przez zdalne nazwy.

paneer_tikka
źródło
1
Pracowałem dla mnie, nie pobrałem poprawnej zdalnej gałęzi, więc zaakceptowana odpowiedź wciąż mi się nie powiodła z mylącym komunikatem. +1
Nathan Hinchey
Zwykle używam git fetch, ale jaka jest różnica między git fetch a git fetch origin?
Ping Woo
@PingWoo Zakładając, że oddział chcesz pobrać zamieszkuje pochodzenia odległe, zarówno git fetchi git fetch remotezrobi to samo. Jeśli chcesz pobierać z pilota innego niż origin, możesz to zrobić za pomocą git fetch <other_remote_name>. Ta sytuacja jest bardzo rzadka, wspomniana tutaj tylko dla kompletności.
paneer_tikka
1
Prawie uderzyłem głową o komputer, wypróbowując wszystkie te rozwiązania. Okazuje się, miałem literówkę w nazwie oddziału, głupie hehe.
Dev Yego,
126

Aby pobrać myBranch, który istnieje zdalnie, a nie lokalnie - To zadziałało dla mnie:

git fetch --all
git checkout myBranch

Dostałem tę wiadomość:

Branch myBranch set up to track remote branch myBranch from origin
Switched to a new branch 'myBranch'
David
źródło
1
Innymi słowy, nie musisz pisać -t?
Andrew Samuelsen,
4
Myślę, że w tej odpowiedzi jest błąd. Pierwotnie wykonałem polecenie bez -ti otrzymałem, You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by performing another checkout.ponieważ nie było lokalnego oddziału o tej samej nazwie. Musiałem ponownie uruchomić, -taby naprawić.
stanri
1
Działa to dla mnie dobrze - mój kolega dodał nowy zdalny oddział, który chciałem dodać do mojego lokalnego repozytorium. Wciąż pobierałem, ale nie widziałem, aby nowa gałąź pojawiała się lokalnie. Nie zdawałem sobie sprawy, że mogę po prostu uciec checkout, żeby to stworzyć. Dzięki!
skwidbreth
2
zależy od wersji git. Najnowsza wersja, jak powiedziano tutaj w innym miejscu, wymaga tylko git checkout <nazwa gałęzi w miejscu pochodzenia>.
UWAŻAJ W SAMYM NAZWIE
--allnigdy nie jest dobrym pomysłem, ponieważ pobierze każdy plik z każdej gałęzi. Zajmie to więcej czasu i przestrzeni. Lepiej być specyficzne nazwą oddziału i zrobić jak ten
Miód
53

Użyj git branch -a(zarówno oddziałów lokalnych, jak i zdalnych) lub git branch -r(tylko oddziałów zdalnych), aby wyświetlić wszystkie piloty i ich oddziały. Następnie możesz zrobić git checkout -t remotes/repo/branchzdalne polecenie i utworzyć lokalny oddział.

Istnieje również polecenie git-ls-remote, aby zobaczyć wszystkie referencje i tagi dla tego pilota.

Daniel Lee
źródło
git checkout remotes/repo/branchsprawia, że ​​git checkout szuka specyfiki ścieżki, a nie zdalnego repo.
Erin,
1
Tak, czy w ogóle możliwe jest wyewidencjonowanie oddziału w zdalnym repozytorium? Oczywiście (a może nie było to takie oczywiste), piloty są najpierw pobierane, abyś miał je lokalnie. W książce git znajduje się dobra sekcja: git-scm.com/book/en/Git-Branching-Remote-Branches
Daniel Lee
43

Tytuł i pytanie są mylone:

  • Pobierz zdalną gałąź Git Fetch
  • jak mój kolega może specjalnie przyciągnąć tę gałąź.

Jeśli pytanie brzmi, w jaki sposób mogę uzyskać dostęp do oddziału zdalnego lub w jaki sposób mogę uzyskać kasę oddziału zdalnego? , prostszym rozwiązaniem jest:

Dzięki Git (> = 1.6.6) możesz używać:

git checkout <branch_name>

Jeśli <branch_name>nie znaleziono lokalnego , ale istnieje dokładnie gałąź śledzenia w dokładnie jednym pilocie o pasującej nazwie, potraktuj ją jako równoważną z:

git checkout -b <branch_name> --track <remote>/<branch_name>

Zobacz dokumentację kasy Git

Dla twojego przyjaciela:

$ git checkout discover
Branch discover set up to track remote branch discover
Switched to a new branch 'discover'
Guillaume Vincent
źródło
Dzięki Guillaume! Właśnie użyłem tego polecenia i napisałem o nim post, aby zobrazować mój dokładny przypadek: leniel.net/2014/05/…
Leniel Maccaferri
<! - git checkout <remote-branch-name> -> działa zgodnie z oczekiwaniami, dzięki Guillaume!
Sachidananda Naik
36

Najłatwiej to zrobić, przynajmniej dla mnie:

git fetch origin <branchName> # Will fetch the branch locally
git checkout <branchName> # To move to that branch
James Rochabrun
źródło
1
Nie przynosi innych gałęzi
Benjamin Harel
7
@BenjaminHarel pytanie brzmi „pobierz zdalną gałąź” nie wszystkie gałęzie. w tym celu może to być pomocne stackoverflow.com/questions/10312521/...
James Rochabrun
2
Po użyciu tego fetchpolecenia wymagany oddział będzie dostępny na komputerze lokalnym. git checkout -b 'your_branch' origin/'remote branch'jest wymagany do kasy tego oddziału.
Abhijeet
30

Posługiwać się:

git checkout -b serverfix origin/serverfix

Jest to dość powszechna operacja, którą Git zapewnia --trackskrótowo:

git checkout --track origin/serverfix

W rzeczywistości jest to tak częste, że istnieje nawet skrót do tego skrótu. Jeśli nazwa gałęzi, którą próbujesz pobrać (a) nie istnieje i (b) dokładnie pasuje do nazwy tylko na jednym pilocie, Git utworzy dla ciebie gałąź śledzenia:

git checkout serverfix

Aby skonfigurować oddział lokalny o innej nazwie niż oddział zdalny, możesz łatwo użyć pierwszej wersji z inną nazwą oddziału lokalnego:

git checkout -b sf origin/serverfix

Teraz Twój lokalny oddział sfbędzie automatycznie pobierał dane origin/serverfix.

Źródło: Pro Git, 2. edycja , napisane przez Scotta Chakona i Bena Strauba ( skrót dla czytelności)

ManuelSchneid3r
źródło
Te stenogramy były lekcją
Z. Khullah
25

Za pomocą tego prostego polecenia:

git checkout -b 'your_branch' origin/'remote branch'
Karthik damodara
źródło
18

Aby pobrać gałąź, która istnieje na pilocie, najprostszym sposobem jest:

git fetch origin branchName
git checkout branchName

Możesz sprawdzić, czy już istnieje na pilocie za pomocą:

git branch -r

Spowoduje to pobranie oddziału zdalnego do lokalnego i automatyczne śledzenie oddziału zdalnego.

Harshit Agarwal
źródło
2
Jak to pytanie nie ma więcej głosów pozytywnych? Mogłem się mylić, ale z pewnością to załatwiło sprawę, ściągnąłem gałąź, której nie miałem lokalnie ze zdalnego ...
Nicholas Petersen
15

Pomogło mi to

1) Aby wyświetlić wszystkie dostępne zdalne gałęzie (np. „Nazwa zdalnego oddziału”)

git branch -r

2) Utwórz oddział lokalny, używając nazwy oddziału zdalnego

git fetch && git checkout 'remote-branch-name'
Arlan T.
źródło
1
Co się stanie, gdy uruchomisz polecenie git pushbez innych argumentów? Czy lokalna gałąź o nazwie jest remote-branch-nameautomatycznie kojarzona z (śledzącą) zdalną gałąź o nazwie origin/remote-branch-name. A może musisz uruchomićgit push -u origin remote-branch-name
PatS
1
spowoduje to odłączenie HEAD
Akin Hwan
15

Możesz także pobrać i sprawdzić zdalną gałąź w jednym ujęciu:

git fetch && git checkout the-branch-name
Kumar Sambhav
źródło
14
git fetch

git branch -r

git checkout <branch_name>
John Rodriguez
źródło
13

Wpisałem

git checkout <branch_name>

i dostał

Branch <branch_name> set up to track remote branch <branch_name> from origin.
Switched to a new branch '<branch_name>'
Guillaume Guillaume
źródło
z dokumentacji kasy git: Jeśli nie znaleziono <nazwa_gałęzi>, ale istnieje dokładnie gałąź śledzenia w dokładnie jednym pilocie o pasującej nazwie, należy traktować jako odpowiednik:git checkout -b <branch_name> --track <remote>/<branch_name>
Guillaume Vincent
11

Czasami prosi się, abyście nie majstrowali przy gałęzi master i pracowali tylko nad gałęzią zdalną (tak jak mnie proszono). Wszystko czego potrzebujesz to zdalna gałąź.

Aby sklonować samą gałąź zdalną (bez systemu głównego), zrób to

git clone url --branch remote_branch_name

gdzie nazwa_gałęzi_zdalnej to nazwa zdalnego oddziału

Na przykład,

git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git --branch v3.15

Zapewni to klonowanie gałęzi zdalnej do gałęzi lokalnej z nazwą gałęzi zdalnej.

Teraz, jeśli zatwierdzisz swój kod i wypchniesz, kod zostanie przesłany tylko do tego oddziału.

ganezdragon
źródło
Powiązane: Jak sklonować pojedynczy oddział w Git? - „git 1.7.10 (kwiecień 2012) pozwala na klonowanie tylko jednej gałęzi:”
Peter Mortensen
11

[Szybka odpowiedź]

Istnieje wiele alternatyw, a moimi ulubionymi są:

- Alternatywa 1:

git fetch --all
git checkout YourBranch

Korzystanie z tej alternatywy przy użyciu oddziału, który istnieje zdalnie, ale nie w Twoim lokalnym.

- Alternatywa 2:

git checkout -b 'YourBranch' origin/'YourRemote'

Prawdopodobnie jest to najprostszy sposób.

Javier C.
źródło
9

Powiedzmy, że twój pilot to [email protected] i chcesz, aby jego gałąź random_branch. Proces powinien wyglądać następująco:

  1. Najpierw sprawdź listę swoich pilotów przez

    git remote -v

  2. Jeśli nie masz zdalnego [email protected] w wynikach powyższego polecenia, dodaj go

    git remote add xyz [email protected]

  3. Teraz możesz pobrać zawartość tego pilota przez

    git fetch xyz

  4. Teraz sprawdź gałąź tego pilota przez

    git checkout -b my_copy_random_branch xyz/random_branch

  5. Sprawdź listę oddziałów według

    git branch -a

Lokalny oddział my_copy_random_branch śledziłby gałąź random_branch twojego pilota.

zafar142003
źródło
8

git fetch --all & git checkout <branch name>

Jerome Anthony
źródło
7

git fetch && git checkout <your friend's branch name> powinien załatwić sprawę

tambakoo
źródło
7

Chcę dać ci polecenie jednowierszowe do pobierania wszystkich zdalnych gałęzi do twojej lokalnej i przełącz się na twoją nowo utworzoną lokalną gałąź:

git fetch && git checkout discover

Po uruchomieniu powyższego polecenia pojawi się następujący komunikat:

Switched to a new branch 'discover'
Branch discover set up to track remote branch discover from origin.

Pierwszy wiersz mówi, że przeszedł na nowy oddział - dlaczego nowy? Jest już tam zdalnie!

Ale tak naprawdę musisz go utworzyć lokalnie. Gałąź jest pobierana ze zdalnego indeksu i tworzona lokalnie dla Ciebie.

Oto discovernowa gałąź, która została utworzona ze zdalnej gałęzi twojego repozytorium discover.

Ale druga linia zawiera więcej informacji niż pierwsza, która mówi nam, że:

Nasz oddział jest skonfigurowany do śledzenia zdalnego oddziału o tej samej nazwie.

Chociaż git fetch pobiera wszystkie oddziały do lokalnego. Ale jeśli pobiegniesz git branchza nim, zobaczysz tylko masteroddział lokalny. Dlaczego ?

Ponieważ dla każdej gałęzi, którą masz zdalnie, musisz utworzyć ją również lokalnie, aby śledzić ją, tak git checkout <branchname>jak to zrobiliśmy w powyższym przykładzie.

Po uruchomieniu git checkoutpolecenia możesz uruchomić git branch, a teraz możesz zobaczyć oba oddziały:

  1. master i 2. odkryj na liście lokalnych.
Haritsinh Gohil
źródło
7

Jeśli chcesz pobrać wszystkie zdalne gałęzie, wpisz tylko:

git fetch --all
Ishwor Khanal
źródło
5

Po prostu spróbuj:

git pull origin your_branch_name
Rizo
źródło
2
Rizo, git pull origin nazwa_gałęzi powinna być najlepszym rozwiązaniem. Jesteś jedyną osobą, która opublikowała to jako rozwiązanie i zadziałało dla mnie. Działa to, ponieważ zaktualizuje gałąź z gałęzią główną. proste i nieskomplikowane.
Ian Poston Framer
3
problem polega na tym, że spróbuje połączyć tę gałąź zdalną z gałęzią BIEŻĄCĄ, która nie jest gałęzią zdalną (ponieważ jest to nowość dla lokalnego repozytorium)
Z. Khullah
Spowoduje to scalenie z bieżącym oddziałem.
Eem Jee
4

Jeśli masz repozytorium, które zostało sklonowane, --depth 1wiele z wymienionych poleceń nie będzie działać. Na przykład patrz tutaj

% git clone --depth 1 https://github.com/repo/code
Cloning into 'code'...
cd code
remote: Counting objects: 1778, done.
remote: Compressing objects: 100% (1105/1105), done.
remote: Total 1778 (delta 87), reused 1390 (delta 58), pack-reused 0
Receiving objects: 100% (1778/1778), 5.54 MiB | 4.33 MiB/s, done.
Resolving deltas: 100% (87/87), done.
Checking connectivity... done.
Checking out files: 100% (1215/1215), done.
% cd code
% git checkout other_branch
error: pathspec 'other_branch' did not match any file(s) known to git.
% git fetch origin other_branch
remote: Counting objects: 47289, done.
remote: Compressing objects: 100% (15906/15906), done.
remote: Total 47289 (delta 30151), reused 46699 (delta 29570), pack-reused 0
Receiving objects: 100% (47289/47289), 31.03 MiB | 5.70 MiB/s, done.
Resolving deltas: 100% (30151/30151), completed with 362 local objects.
From https://github.com/repo/code
 * branch            other_branch-> FETCH_HEAD
% git checkout other_branch
error: pathspec 'other_branch' did not match any file(s) known to git.
%

W takim przypadku przełożyłbym repozytorium, ale być może istnieją inne techniki, np. Git płytkie klonowanie

Colin D.
źródło
3

Jeśli znasz już swój zdalny oddział ...

git remote
=> One
=> Two

i znasz nazwę oddziału, który chcesz sprawdzić , na przykład br1.2.3.4 , a następnie zrób to

git fetch One
=> returns all meta data of remote, that is, the branch name in question.

Pozostaje tylko sprawdzić oddział

git checkout br.1.2.3.4

Następnie zrób z niego nowe gałęzie.

SoEzPz
źródło
3

Kroki są następujące;

  1. git fetch originlub git fetch --allspowoduje to pobranie wszystkich zdalnych gałęzi do twojego lokalnego, a następnie będzie to druga opcja, którą możesz wykonać.

  2. git checkout --track origin/<The_remote_branch you want to switch over>

Następnie pracuj nad tym oddziałem i możesz sprawdzić, czy jesteś w tym oddziale, czy nie, wpisując

git branch

Wyświetla gałąź, w której aktualnie się znajdujesz.

Sam
źródło
2

git branch <name> --track origin/<name>

Chris F. Carroll
źródło
2

Sprawdź .git/configplik, a zwłaszcza to, jakie śledzenie jest dostępne podczas pobierania dla tego pilota.

[remote "randomRemote"]
    url = [email protected]:someUser/someRepo.git
    fetch = +refs/heads/*:refs/remotes/randomRemote/*

Jeśli ma heads/*wskazywać randomRemote/*, po uruchomieniu git fetch randomRemotepobierze wszystkie gałęzie.

Następnie możesz po prostu pobrać tę gałąź.

Inaczej,

  1. W tym celu musisz dodać zdalne oddziały do ​​śledzenia. Sprawdź swoje .git/configpo uruchomieniu tego. Zrozumiesz.

    git remote set-branches --add randomRemote randomBranch
    
  2. Uruchom git fetch randomRemote. Spowoduje to pobranie oddziału zdalnego.

  3. Teraz możesz biegać git checkout randomBranch.

Vamshi Suram
źródło
1

Używasz „git pull”, aby oddzielić swoje gałęzie. Użyję rzeczywistych nazw repozytoriów i gałęzi, aby pomóc, ponieważ „lbranch” i „rbranch” są trudne do odczytania.

Użyjmy:

  • myteam.unfuddle.com = zdalny serwer Git
  • tlc = Usuń konto projektu, w którym istnieje repozytorium
  • daves_branch = nazwa zdalnego oddziału

    Ty lub dowolny kolega możecie uruchomić to, aby pobrać tylko swój oddział, bez względu na liczbę oddziałów:

    git init
    git pull [email protected]:myteam/tlc daves_branch:refs/remotes/origin/daves_branch
    
  • Andrzej
    źródło
    0

    Proste polecenie git checkout remote_branch_namepomoże ci stworzyć lokalny oddział, który ma wszystkie zmiany w zdalnym oddziale.

    Sijeesh
    źródło
    -2
    git checkout -b branch_name
    git pull remote_name branch_name
    
    Leon
    źródło
    3
    Chociaż ten fragment kodu może odpowiedzieć na pytanie, lepiej podać wyjaśnienie, co robi i czym różni się od bardzo dużej liczby odpowiedzi już tutaj.
    DaveyDaveDave
    2
    Osobiście nie podoba mi się ta opcja. Ponieważ w przypadku tworzenia nowej gałęzi z poziomu Master, a następnie pobierania danych z gałęzi zdalnej, gałąź ta może, ale nie musi znajdować się na tej samej stronie co Master i może zapraszać niepotrzebne aktualizacje kodu
    zeetit
    Niektóre wyjaśnienia byłyby w porządku.
    Peter Mortensen,