Padaryti esamą „Git“ sekimo šaką nuotoliniu filialu?

Aš žinau, kaip sukurti naują filialą, kuris stebi atokius filialus, bet kaip padaryti, kad esamas filialas būtų nutolęs filialas?

Žinau, kad galiu tiesiog redaguoti .git/config failą, bet atrodo, kad turėtų būti lengviau.

3222
06 февр. Pat Notz rinkinys - vasario 6 d 2009-02-06 18:14 '09 at 18:14 2009-02-06 18:14
@ 19 atsakymų

Atsižvelgiant į „ foo filialą ir nuotolinį „ upstream :

Nuo Git 1.8.0:

 git branch -u upstream/foo 

Arba, jei vietos filialas nėra dabartinis filialas:

 git branch -u upstream/foo foo 

Arba, jei norite įvesti ilgesnes komandas, jos atitinka du aukščiau nurodytus:

 git branch --set-upstream-to=upstream/foo git branch --set-upstream-to=upstream/foo foo 

Nuo Git 1.7.0:

 git branch --set-upstream foo upstream/foo 

Pastabos:

  • Visos pirmiau minėtos komandos bus priverstos vietinį foo filialą stebėti nuotolinį foo filialą iš nuotolinio upstream .
  • Senoji (1.7.x) sintaksė nerekomenduojama naujoms (1. 8+) sintaksėms. Nauja sintaksė turėtų būti intuityvesnė ir lengviau įsiminti.
  • Upstream apibrėžimas nepavyks su naujai sukurtais nuotolinio valdymo pulteliais, kurie nebuvo atrinkti. Šiuo atveju iš anksto paleiskite git fetch upstream .

Taip pat žiūrėkite: Kodėl visą laiką turėčiau daryti „-set-upstream“?

3917
18 февр. Atsakyti Dan Molding 18 Vas 2010-02-18 06:06 '10, 6:06, 2010-02-18 06:06

Galite atlikti šiuos veiksmus (darant prielaidą, kad buvo išgauti pagrindiniame kapitale ir norite siųsti jį į nuotolinį pagrindinį filialą):

Nustatykite nuotolinio valdymo pultą, jei jo dar neturite.

 git remote add origin ssh://... 

Dabar sukonfigūruokite vedlį, kad jis žinotų, kaip sekti:

border=0
 git config branch.master.remote origin git config branch.master.merge refs/heads/master 

Ir spustelėkite:

 git push origin master 
222
09 марта '09 в 11:50 2009-03-09 11:50 atsakė Pauliui Hedenui kovo 09'09 , 11:50 2009-03-09 11:50

Tai darau kaip šalutinis poveikis, paspaudus pasirinkimą su -u , kaip

 $ git push -u origin branch-name 

Lygiavertis ilgas variantas --set-upstream .

git-branch komanda taip pat supranta --set-upstream , tačiau jos naudojimas gali būti klaidinantis. 1.8.0 versija keičia sąsają.

git branch --set-upstream pasenęs ir gali būti pašalintas santykinai tolimoje ateityje. git branch [-u|--set-upstream-to] buvo įvestas su git branch [-u|--set-upstream-to] argumentų tvarka.

hellip;

Tai buvo viliojanti sakyti git branch --set-upstream origin/master , bet jis sako Git užsisakyti vietos filialas "kilmė / meistras" integruotis su dabartiniu patikrintu filialu, kuris vartotojui yra mažai tikėtinas. Ši parinktis pasenusi; vietoj to naudokite naują - --set-upstream-to (trumpą ir saldus -u ).

Pasakykite, kad turite vietinį „ foo filialą ir norite, kad jis tvarkytų filialą su tuo pačiu pavadinimu, kaip ir jo priešas. Padarykite tai

 $ git branch foo $ git branch --set-upstream-to=origin/foo 

ar tiesiog

 $ git branch --set-upstream-to=origin/foo foo 
141
02 окт. atsakymas, kurį pateikė Greg Bacon 02 okt. 2012-10-02 19:24 '12, 19:24, 2012-10-02 19:24

git_remote_branch įrankį galite rasti. Jis siūlo paprastas komandas, skirtas kurti, publikuoti, ištrinti, stebėti ir pervardyti ištrintus filialus. Vienas gražus bruožas yra tai, kad galite paklausti grb komandos, kad paaiškintumėte, kokias git komandas jis atliks.

51
06 февр. James Mead atsakymas 06 vasario mėn. 2009-02-06 20:11 '09 ne 20:11 2009-02-06 20:11

Iš tikrųjų už priimtą atsakymą į darbą:

49
23 нояб. Atsakymas pateikiamas Hedgehog lapkričio 23 d. 2010-11-23 15:08 '10, 15:08, 2010-11-23 15:08

Manau, kad atgal į Git 1.5.x galite padaryti vietinį $BRANCH filialą stebėti nuotolinę origin/$BRANCH filialą.

Atsižvelgiant į tai, kad yra $BRANCH ir origin/$BRANCH , ir jūs šiuo metu $BRANCH (atsijungti, jei yra):

 git branch -f --track $BRANCH origin/$BRANCH 

Tai atkuria $BRANCH kaip stebėjimo šaką. -f pajėgos kuriamos, nepaisant jau esamo $BRANCH . --track yra neprivaloma, jei nustatomi normalūs numatytieji nustatymai (t. y. git -config branch.autosetupmerge ).

Atkreipkite dėmesį, kad jei origin/$BRANCH jau nėra, galite ją sukurti paspaudę vietinį $BRANCH nuotolinį saugyklą:

 git push origin $BRANCH 

Atlikę ankstesnę komandą stumkite vietinį filialą į sekimo šaką.

42
28 июля '10 в 12:33 2010-07-28 12:33 atsakymas pateikiamas „ wu-lee“ liepos 28 d., 10 val. 12:33 2010-07-28 12:33

1 - atnaujinti vietinius metaduomenis naudojant: git fetch --all

2019

Būtinai paleiskite:

 git config push.default tracking 

kad galėtumėte turėti jokių problemų

22
30 авг. atsakymas pateikiamas romanlv 30 rug . 2011-08-30 00:38 '11 prie 0:38 2011-08-30 00:38

.git/config redagavimas tikriausiai yra paprasčiausias ir greičiausias būdas. Štai ką „Git“ komandos atlieka norėdami valdyti nuotolinius filialus.

Jei nenorite neryškių dalykų daryti faile rankiniu būdu (ir tai nėra taip sunku), visada galite naudoti „ git config “ šiam ... bet vėlgi tai tiesiog redaguoja .git/config failą.

Žinoma, yra būdų, kaip automatiškai sekti nuotolinį filialą, naudojant „ git checkout (pavyzdžiui, perduodant „ --track flag “), tačiau šios komandos veikia su naujais filialais, o ne su esamomis.

21
06 февр. atsakymas pateikiamas mipadi 06 vasario mėn. 2009-02-06 18:17 '09, 18:17 PM 2009-02-06 18:17

Labai trumpai

 git branch --set-upstream yourLocalBranchName origin/develop 

Dėl šios priežasties yourLocalBranchName stebės nuotolinį filialą, pavadintą develop .

16
09 окт. atsakymas pateikiamas MadNik 09 okt. 2012-10-09 10:19 '12, 10:19, 2012-10-09 10:19

1.6.x atveju tai galima padaryti naudojant įrankį git_remote_branch :

 grb track foo upstream 

Dėl to „Git“ atliks foo upstream/foo takelį.

14
01 июня '10 в 5:23 2010-06-01 05:23 atsakymas pateikiamas wik 01 birželio 10 d. 5:23 val. 2010-06-01 05:23

Naudokite parinktį „--track“

  • Po git pull :

    git checkout --track <remote-branch-name>

  • Arba:

    git fetch git checkout <branch-name>

8
02 авг. Atsakymą pateikė Loukan ElKadi 02 rugpjūčio 2 d. 2016-08-02 13:23 '16 at 13:23 pm 2016-08-02 13:23

Čia, naudodami github ir git version 2.1.4 , tiesiog paleiskite:

 $ git clone git@github.com:user/repo.git 

Ir konsolės siunčiamos per itelsef, net jei jos nėra prijungtos vietoje:

 $ git remote show origin * remote origin Fetch URL: git@github.com:user/repo.git Push URL: git@github.com:user/repo.git HEAD branch: master Remote branches: develop tracked <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< master tracked Local branch configured for 'git pull': master merges with remote master Local ref configured for 'git push': master pushes to master (up to date) 

Tačiau, žinoma, vis dar nėra vietos filialo:

 $ git branch * master <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 

Žr Dabar, jei ką tik padarysite, ji automatiškai atliks magiją:

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

Taip paprasta!


Santrauka Tiesiog paleiskite šias dvi komandas:

 $ git clone git@github.com:user/repo.git $ git checkout develop 
8
30 нояб. Atsakymą pateikė dr. Beco lapkričio 30 d. 2015-11-30 02:04 '15, 02:04 2015-11-30 02:04

Norėdami sukurti naują filialą, galime naudoti šią komandą.

  git checkout --track -b pavyzdys 
Jei norite sukurti jau sukurtą filialą, kad būtų sukurtas ryšys tarp nuotolinio valdymo pulto ir tada iš šio filialo, naudokite šią komandą

  git filialas -u kilmė / nuotolinio filialo pavadinimas 
6
20 апр. jithu reddy atsakymas balandžio 20 d 2017-04-20 13:24 '17, 13:24 pm 2017-04-20 13:24

Aš naudoju šią komandą (tarkime, kad jūsų vietinio filialo pavadinimas yra „branch-name-local“ ir nuotolinio filialo pavadinimas yra „branch-name-remote“):

 $ git branch --set-upstream-to=origin/branch-name-remote branch-name-local 

Jei vietiniai ir nuotoliniai filialai turi tą patį pavadinimą, tiesiog atlikite šiuos veiksmus:

 $ git branch --set-upstream-to=origin/branch-name branch-name 
5
22 дек. Atsakymas pateikiamas iszlik 22 Dec. 2015-12-22 12:46 '15, 12:46, 2015-12-22 12:46

Kažkaip bandiau pridėti nuotolinio stebėjimo filialą į esamą filialą, tačiau neturėjau prieigos prie šio nuotolinio saugyklos sistemoje, kur norėjau pridėti šį nuotolinio stebėjimo filialą (nes dažnai šio repo kopiją per „sneakernet“ eksportuoju į kitą sistemą, turinčią prieigą stumti šį nuotolinio valdymo pultą). Radau, kad nebuvo jokio būdo priverstinai pridėti nuotolinį filialą į vietinį, kuris dar nebuvo išgautas (taigi vietinis nežinojo, kad filialas yra nuotoliniame kompiuteryje, ir aš gausiu klaidą: the requested upstream branch 'origin/remotebranchname' does not exist ).

Dėl to man pavyko pridėti naują, anksčiau nežinomą nuotolinį filialą (be pasirinkimo), pridėjus naują antraštės failą .git/refs/remotes/origin/remotebranchname , o tada nukopijuoti ref (akies obuolys buvo greičiausias, nesėkmingas, kaip buvo; ) iš sistemos, turinčios prieigą prie šaltinio repo į darbo stotį (su vietos repo, į kurį pridėjau nuotolinį filialą).

Kai tai buvo padaryta, galėčiau naudoti git branch --set-upstream-to=origin/remotebranchname

4
05 окт. atsakymas pateikiamas Ville 05 okt. 2015-10-05 09:10 '15, 9:10, 2015-10-05 09:10

Tai nėra tiesioginis atsakymas į šį klausimą, bet norėjau palikti pastabą visiems, kurie gali turėti tą pačią problemą kaip ir aš, kai bandau sukurti filialą prieš srovę.

Būkite atsargūs paspaudę .

Su senesnėmis „git“ versijomis numatytasis buvo atitikimas , kuris sukeltų labai nepageidaujamą elgesį, jei turite:

Vietinis magistro stebėjimas įjungiant / valdant

Nuotolinio pradinio filialo stebėjimas prieš srovę / pirminę

Jei bandėte „paspaudti paspaudimą“, kai „upstream“ filialas su push.default kartografavimu, „ git“ automatiškai bandys sujungti vietinį „magistro“ filialą „į viršų“ / šeimininką, sukeldamas daug chaoso.

Tai suteikia daugiau pagrįstų veiksmų:

git config --global push.default upstream

4
21 мая '16 в 15:53 2016-05-21 15:53 atsakymą pateikė Tom Mettam gegužės 21 d., 16 val. 15:53 2016-05-21 15:53

arba tiesiog:

persijungti į filialą, jei dar nesate jo:

 [za]$ git checkout branch_name 

paleisti

 [za]$ git branch --set-upstream origin branch_name Branch origin set up to track local branch brnach_name by rebasing. 

ir esate pasiruošę:

  [za]$ git push origin branch_name 

Galite apžiūrėti konfigūracijos failą, kad pamatytumėte, ką jis stebi, vykdydamas:

  [za]$ git config -e 

Taip pat malonu žinoti, tai rodo, kurie filialai yra stebimi ir kurie nėra. :

  [za]$ git remote show origin 
3
07 окт. atsakymas pateikiamas zee 07 okt. 2016-10-07 19:20 '16 at 19:20 2016-10-07 19:20

Jis taip pat veiks.

 git branch --set-upstream-to=/< remote>/< branch> < localbranch> 
-1
22 июня '16 в 19:37 2016-06-22 19:37 Abhi atsakymą pateikė birželio 22 d., 16 val. 19:37 2016-06-22 19:37

Kiti klausimai apie arba Užduoti klausimą