„Git“ atsiunčia nuotolinį filialą

Mano kolega ir aš dirbame su ta pačia saugykla, kurią mes techniškai padalijome į dvi šakas, kurių kiekvienas skirtas skirtingiems projektams, tačiau jie turi panašumų, todėl kartais norime atsiųsti juos atgal į branch *.

Tačiau turiu branch . Turiu klausimą, kaip mano kolega gali konkrečiai naudoti šią temą?

git clone repo nesukuria filialų vietiniu mastu, nors matau, kad po to, kai stumiama mano dalis, jie gyvena nešvankioje būsenoje.

Be to, kai aš iš pradžių -b checkout filialą, aš -b checkout . Nežinote, ar tai labai svarbu?

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

Tai yra komandos, kurias vykdiau. Bet tai tikrai neveikia.

Noriu, kad galėčiau patikrinti šią temą, o tada siųsti ir įrašyti tik filialo pakeitimus iš įvairių bendradarbių ar darbo vietų .

1757
02 марта '12 в 20:06 2012-03-02 20:06 Davidas yra nustatytas kovo 2 d. 12 d. 20:06 2012-03-02 20:06
@ 26 atsakymai

Turite sukurti vietinį filialą, kuris seka nuotolinį filialą. Šioje komandoje bus sukurtas vietinis filialas, pavadintas daves_branch , sekantis nuotolinio filialo / daves_branch kilmę . Spustelėjus pakeitimus, nuotolinis filialas bus atnaujintas.

Naujausias „git“ versijas:

 git checkout --track origin/daves_branch 

--track yra santrumpa git checkout -b [branch] [remotename]/[branch] kur šiuo atveju yra šaltinis [remotename], ir [branch] yra dvigubai didesnis, šiuo atveju daves_branch .

Jei jums reikia 1.5.6.5.

 git checkout --track -b daves_branch origin/daves_branch 

Už 1.7.2.3 ir daugiau gitų tai yra pakankamai (galbūt tai prasidėjo anksčiau, tačiau tai yra anksčiausias patvirtinimas, kad galėjau greitai rasti):

 git checkout daves_branch 

Atkreipkite dėmesį, kad naujausiose „git“ versijose ši komanda nesukurs vietinio filialo ir nuves jus į „atskirtą HEAD“ būseną. Jei norite vietinį padalinį, naudokite --track . Išsami informacija čia: http://git-scm.com/book/en/v2/Git-branching-Remote-branches#Tracking-branches

2428
02 марта '12 в 20:45 2012-03-02 20:45 atsakymas pateikiamas ralphtheninja 02 kovo 12 d. 20:45 2012-03-02 20:45

Aš naudoju fetch po kurio buvo atliktas checkout ...

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

... kur <rbranch> yra nuotolinis filialas arba šaltinio nuoroda, ir <lbranch> yra vis dar neegzistuojantis vietinis filialas ar gavėjas, kurį norite stebėti ir kurie tikriausiai nori įvardyti tą patį, kaip nuotolinis filialas ar šaltinio nuoroda . Tai paaiškinta <refspec> paaiškinimo <refspec> .

„Git“ yra toks protingas, kad automatiškai nutraukia pirmąją komandą, jei aš įvedu keletą pirmųjų nuotolinio filialo raidžių. IE: net nereikia nurodyti vietos filialo, Git automatiškai nukopijuoja nuotolinio filialo pavadinimą. Ačiū Git!

Be to, kaip atsakymas į šį panašų pranešimą, SO rodo, kad jei fetch filialo nenurodote, jūs vis tiek galite ją sukurti, kai -b vėliavą. IE: git fetch <remote> <branch> , tada git checkout -b <branch> <remote>/<branch> daro tą patį kaip ir mano pirminis atsakymas. Ir, žinoma, jei jūsų repo turi tik vieną nuotolinio valdymo pultą, galite tiesiog atlikti git checkout <branch> po fetch ir jums bus sukurtas vietinis filialas. EG: Jūs tiesiog klonavote repo ir norite patikrinti papildomus filialus iš konsolės.

border=0

Manau, kad kai kurie dokumentacijos dokumentai gali būti nukopijuoti stulbinančiai. Visų pirma, parinkčių <refspec> skyrius yra tas pats. Tačiau nemanau, kad fetch niekada nebus merge , todėl, jei paliksite dvitaškio adresato pusę tuščią, fetch neturėtų nieko daryti .

PASTABA. Ši git fetch <remote> <refspec> netinka „ git fetch <remote> <refspec>: taigi ji nieko nedarys, bet „ git fetch <remote> <tag> pats, kaip git fetch <remote> <tag>:<tag> , kuri turėtų nukopijuoti nuotolinį <tag> vietoje.

Manau, kad tai naudinga, jei norite nukopijuoti nuotolinį filialą vietoje, bet nebūtinai ją nedelsiant patikrinti. Priešingu atveju dabar naudoju aukščiau pateiktą priimtą atsakymą , kuris išsamiai paaiškintas pirmojoje projekto dalyje , o tada - parinkčių skyriuje, kuriame pateikiamas paaiškinimas „ --track , nes tai yra 1-linijinis. Na ... kaip ir 1 linijinis, nes vis dar turite paleisti „ git fetch <remote> .

FYI: užsakymas <refspecs> (šaltinis: paskirties vieta) paaiškina išgalvotą „Git -1.7“ metodą pašalinti ištrintus filialus , IE: nespauskite ant refspec paskirties vietos.

792
19 апр. Mark Mikofski atsakymas balandžio 19 d 2013-04-19 03:45 '13, 3:45, 2013-04-19 03:45

Jei bandote „patikrinti“ naują nuotolinį filialą (kuris yra tik nuotoliniame, bet ne vietiniame), tai jums reikia:

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

Manoma, kad norite ištraukti iš šaltinio. Jei ne, pakeiskite šaltinį savo nuotoliniu pavadinimu.

292
17 мая '13 в 15:14 2013-05-17 15:14 atsakymas pateikiamas paneer_tikka gegužės 17 d. 13 val. 15:14 2013-05-17 15:14

Norėdami išbandyti mano skyrių, kuris yra nuotoliniu būdu, o ne vietoje - jis dirbo man:

 git fetch --all git checkout myBranch 

Gavau šį pranešimą:

 Branch myBranch set up to track remote branch myBranch from origin Switched to a new branch 'myBranch' 
93
12 нояб. Atsakymą davė Davidas lapkričio 12 d. 2013-11-12 06:36 '13, 6:36, 2013-11-12 06:36

Naudokite git branch -a (tiek vietinius, tiek nuotolinius filialus) arba git branch -r (tik nuotoliniai filialai), kad pamatytumėte visus konsolius ir jų filialus. Tada galite atlikti git checkout -t remotes/repo/branch pultą git checkout -t remotes/repo/branch nuotoliniame kompiuteryje ir sukurti vietinį padalinį.

Taip pat yra git ls-remote komanda, kad galėtumėte peržiūrėti visas šio nuotolinio kompiuterio nuorodas ir žymes.

41
02 марта '12 в 20:16 2012-03-02 20:16 atsakymas duotas Danieliui Lee 02 kovo 12 d. 20:16 2012-03-02 20:16

Pavadinimas ir klausimas yra painiojami:

  • „Git“ atsiunčia nuotolinį filialą
  • Kaip mano kolega nukreipia šį filialą.

Jei kyla klausimas, kaip aš galiu gauti nuotolinį filialą dirbti ar kaip patikrinti nuotolinį filialą, paprastesnis sprendimas yra:

Naudodami git (> = 1.6.6) galite naudoti:

 git checkout <branch_name> 

Jei vietos <branch_name> nerastas, bet yra stebėjimo filialas vienoje nuotolinėje vietoje su atitinkamu pavadinimu, <branch_name> jį lygiaverčiu:

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

žr. git checkout dokumentaciją

Jūsų draugui:

 $ git checkout discover Branch discover set up to track remote branch discover Switched to a new branch 'discover' 
34
31 марта '14 в 13:48 2014-03-31 13:48 atsakymą pateikė Guillaume Vincent, kovo 31 d. 14, 13:48 2014-03-31 13:48
 git checkout -b serverfix origin/serverfix 

Tai gana dažna operacija, kurioje git suteikia trumpesnę išraišką: -track:

 git checkout --track origin/serverfix 

Tiesą sakant, tai taip paplitusi, kad netgi etiketė yra šios etiketės. Jei filialo, kurį bandote patikrinti, pavadinimas (a) neegzistuoja ir (b) tiksliai atitinka tik vieno nuotolinio serverio pavadinimą, git sukurs jums stebėjimo šaką:

 git checkout serverfix 

Jei norite nustatyti vietinį filialą, kurio pavadinimas yra kitoks nei nuotolinis filialas, galite lengvai naudoti pirmąją versiją su kitokiu vietinio filialo pavadinimu:

 git checkout -b sf origin/serverfix 

Dabar jūsų vietinis sf filialas automatiškai išeis iš kilmės / serverio.

Šaltinis: „ Pro git 2nd Edition“, parašytas Scott Chacon ir Ben Straub (skaitymo plyšys)

25
18 марта '16 в 3:21 2016-03-18 03:21 atsakymą pateikė ManuelSchneid3r kovo 18 d., 16 d., 03:21 2016-03-18 03:21

Naudojant šią paprastą komandą:

 git checkout -b 'your_branch' origin/'remote branch' 
19
18 мая '17 в 12:38 2017-05-18 12:38 atsakymą pateikė Karthik damodara gegužės 18 d. 17 val. 12:38
 git fetch git branch -r git checkout <branch_name> 
13
04 дек. John Rodriguez atsakymas gruodžio 04 2013-12-04 23:53 '13, 23:53, 2013-12-04 23:53

Galite gauti ir patikrinti nuotolinį filialą vienu smūgiu: -

 git fetch  git checkout the-branch-name 
12
25 марта '15 в 9:43 2015-03-25 09:43 atsakymą pateikė Kumar Sambhav kovo 15 d. 15 val. 9:43 2015-03-25 09:43

Paprasčiausias būdas tai padaryti bent jau man:

 git fetch origin <branchName> 
12
06 окт. James Rochabrun atsakymas, 06 spalis 2017-10-06 12:26 '17, 12:26 pm 2017-10-06 12:26

Aš įvedžiau

 git checkout <branch_name> 

ir gavo

 Branch <branch_name> set up to track remote branch <branch_name> from origin. Switched to a new branch '<branch_name>' 
10
17 окт. atsakymas pateikiamas Guillaume Guillaume 17 okt. 2013-10-17 03:07 '13, 03:07 2013-10-17 03:07

Kartais prašoma nerimauti su pagrindiniu filialu ir dirbti tik su nuotoliniu filialu (kaip man buvo paprašyta). Taigi, viskas, ko jums reikia, yra nuotolinis filialas.

Taigi, klonuoti nuotolinį filialą atskirai (be šeimininko), tai atlikite

 git clone url --branch remote_branch_name 

kur, Remote_branch_name yra nuotolinio filialo pavadinimas

Pavyzdžiui

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

Tai leis jums klonuoti nuotolinį filialą į vietinį filialą su nuotolinio filialo pavadinimu.

Dabar, jei perduosite kodą ir spustelėsite, kodas bus išsiųstas tik šiai temai.

9
06 февр. atsakymą pateikė ganezdragon 06 vasaris. 2015-02-06 08:11 '15, 08:11 AM 2015-02-06 08:11

git fetch --all git checkout <branch name>

7
20 нояб. Jerome Anthony lapkričio 20 d 2017-11-20 03:42 '17 at 3:42 2017-11-20 03:42

Kas man padėjo

1) Jei norite peržiūrėti visus galimus nuotolinius filialus (pvz., „Nuotolinis filialas“)

 git branch -r 

2) Sukurkite vietinį filialą, naudodami nuotolinio filialo pavadinimą.

 git fetch  git checkout 'remote-branch-name' 
6
17 сент. atsakymą pateikė Arlan T 17 sep . 2018-09-17 05:16 '18 at 5:16 2018-09-17 05:16

git fetch git checkout <your friend branch name> turėtų padėti

4
25 апр. atsakymas pateikiamas tambakoo 25 Bal 2018-04-25 14:37 '18, 14:37 pm 2018-04-25 14:37

Tarkime, kad jūsų konsolė yra git@xyz.git ir jums reikia jos filialo random_branch. Procesas turėtų būti toks:

  1. Pirmiausia patikrinkite savo nuotolinio valdymo pultų sąrašą

    git remote -v

  2. Jei neturite git@xyz.git pašalintos iš anksčiau pateiktos komandos išvesties, ją pridėtumėte

    git remote add xyz git@xyz.git

  3. Dabar galite gauti šio nuotolinio turinio turinį

    git fetch xyz

  4. Dabar patikrinkite šio nuotolinio valdymo pultą

    git checkout -b my_copy_random_branch xyz/random_branch

  5. Patikrinkite filialų sąrašą pagal

    git branch -a

Vietinis „my_copy_random_branch“ filialas stebės jūsų konsolės atsitiktinę šaką.

4
06 марта '18 в 19:59 2018-03-06 19:59 atsakymas pateikiamas zafar142003 m. kovo 6 d. 18 val. 19.59 val. 2018-03-06 19:59

Jei jau žinote savo nuotolinį filialą, pvz., ...

 git remote => One => Two 

ir jūs žinote filialo, kurį norite patikrinti, pavadinimą. br1.2.3.4 , tada atlikite

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

viskas, kas liko, yra patikrinti filialą

 git checkout br.1.2.3.4 

Tada atidarykite visus naujus filialus.

3
26 июня '15 в 20:51 2015-06-26 20:51 atsakymą pateikė „ SoEzPz “ birželio 26 d. 15, 20:51 2015-06-26 20:51

tiesiog pabandykite

$ git pull origin your_branch_name

3
12 дек. atsakymas duotas Rizo gruodžio 12 d. 2017-12-12 22:47 '17, 10:47 pm 2017-12-12 22:47

Šie veiksmai yra tokie:

  • git fetch origin git fetch --all arba „ git fetch --all - tai pašalins visus ištrintus filialus jūsų vietinėje ir tada antrąją parinktį, kurią galite tvarkyti.

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

Tada dirbti su šiuo gija, ir galite patikrinti, ar esate šioje temoje, ar ne, įvesdami

 git branch 

Rodo filialą, kuriame esate.

3
26 дек. atsakymas į Sam 26 d 2013-12-26 13:09 '13, 13:09, 2013-12-26 13:09

Jei turite saugyklą, kuri buvo klonuota su -depth 1, tada daugelis išvardytų komandų neveiks. Pavyzdžiui, žiūrėkite čia

 % 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. % 

Šiuo atveju norėčiau atšaukti atpirkimo sandorį , bet galbūt yra ir kitų metodų, pvz., Git sekli klonas (klonas -depth) praleidžia nuotolinius filialus

2
25 янв. atsakymą pateikė Colin D 25 sausis 2018-01-25 00:21 '18 prie 0:21 201-01-25 00:21

.git/config pirma patikrinkite .git/config , kokia stebėjimo funkcija yra šios konsolės ištraukoje .

 [remote "randomRemote"] url = git@github.com:someUser/someRepo.git fetch = +refs/heads/*:refs/remotes/randomRemote/* 

Jei jis turi heads/* nukreiptas į randomRemote/* , kai paleisite git fetch randomRemote jis git fetch randomRemote visus filialus. Tada galite tiesiog patikrinti šią temą.

Priešingu atveju

  • Stebėjimui turite pridėti ištrintus filialus. Po to paleiskite .git/config . Jūs suprasite. Git nuotolinio filialo rinkinys --add randomRemote randomBranch

  • Paleiskite git fetch randomRemote . Tai sukels nuotolinį filialą.

  • Dabar galite paleisti git checkout randomBranch

2
01 февр. Atsakymą pateikė Vamshi Suram 01 vasaris. 2017-02-01 17:29 '17, 17:29 pm 2017-02-01 17:29

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

1
11 марта '18 в 21:02 2018-03-11 21:02 Chris F Carroll atsakymas kovo 11 d. 18 val. 21:02 2018-03-11 21:02

Jūs naudojate „git pull“, kad filialai būtų atskirti. Aš naudosiu faktinius repo pavadinimus ir filialus, nes „lbranch“ ir „rbranch“ yra sunkiai iššifruoti.

Leisti naudoti:

myteam.unfuddle.com = nuotolinio serverio git tlc = atsijungti projekto sąskaitą, kurioje yra repo, daves_branch = nuotolinio filialo pavadinimas

Jūs arba bet kuris kolega gali paleisti šią funkciją, kad ištrauktumėte tik savo filialą, nesvarbu, kiek filialų yra:

 git init git pull git@myteam.unfuddle.com: myteam / tlc daves_branch: nuorodos / nuotolinės / kilmės / daves_branch
1
23 мая '13 в 0:10 2013-05-23 00:10 atsakymą pateikė Andrew , gegužės 23 d., 13 d., 0:10 2013-05-23 00:10

Paprasta komanda - „git checkout remote_branch_name“ padės jums sukurti vietinį padalinį, kuriame yra visi nuotolinio filialo pakeitimai.

0
19 янв. SIjeesh Kattumunda atsakymas, pateiktas sausio 19 d 2018-01-19 15:34 '18, 15:34 pm 2018-01-19 15:34
 git checkout -b branch_name git pull remote_name branch_name 
-1
22 янв. atsakymas pateikiamas Leon 22 d. 2019-01-22 13:43 '19, 13:43 pm 2019-01-22 13:43

Kiti klausimai apie „ žymų arba Ask a Question