Git: Kas yra sekimo filialas?

Ar kas nors gali paaiškinti „sekimo filialą“, kaip jis taikomas?

Čia pateiktas git-scm.com apibrėžimas:

„Stebėjimo filialas“ „Git“ yra vietinis filialas, prijungtas prie nuotolinio filialo. Kai stumiate ir traukiate šakas, jis automatiškai patenka į nuotolinį filialą, su kuriuo jis susietas.

Naudokite tai, jei visada turite tokią pačią viršutinę kryptį ir nenorite naudoti „git pull“.

Deja, būdamas naujas „Git“ ir iš SVN, šis apibrėžimas man neturi prasmės.

Aš perskaičiau Pitmatic vadovą Gitui (beje, puiki knyga), ir jie, atrodo, rodo, kad sekimo šakos yra geros ir kad po pirmojo nuotolinio valdymo (šiuo atveju šaltinio) sukūrimo turėtumėte nustatyti pagrindinį savo filialą kaip stebėjimo filialas, tačiau, deja, jis neapima, kodėl sekimo filialas yra geras dalykas arba kokią naudą gaunate, nustatydami pagrindinį filialą kaip šaltinio saugyklos stebėjimo šaką.

Ar kas nors mane apšviečia (anglų kalba)?

76
14 янв. nustatė jerhinesmith Jan 14 2011-01-14 19:50 '11, 19:50, 2011-01-14 19:50
@ 3 atsakymai

„ProGit“ knygoje yra labai geras paaiškinimas :

Stebėjimo šakos

Vietos nuotolinio filialo padalinio patikrinimas automatiškai sukuria vadinamąjį stebėjimo filialą. Stebėjimo filialai yra vietiniai filialai, kurie turi tiesioginį ryšį su nuotoliniu filialu. Jei esate sekimo šakoje ir įrašysite „git push“, „git“ automatiškai sužinos, kurį serverį ir filialą spustelėkite. Be to, veikiant „git pull“, o viename iš šių šakų, ištrinami visi ištrinti ryšiai ir automatiškai sujungiami į atitinkamą nuotolinį filialą.

Kai klonuojate saugyklą, ji paprastai automatiškai sukuria pagrindinį filialą, kuris seka pradžią / šeimininką. Štai kodėl git stumti ir ištraukti darbus iš dėžutės be jokių kitų argumentų. Tačiau, jei norite, galite nustatyti kitus stebėjimo filialus, tuos, kurie nekreipia dėmesio į šakas pagal kilmę ir nekontroliuoja pagrindinio filialo. Paprastas atvejis yra pavyzdys, kurį ką tik matėte naudodami git checkout -b [branch] [remotename]/[branch] . Jei turite git versiją 1.6.2 ar naujesnę, galite naudoti santrumpą --track :

 $ git checkout --track origin/serverfix Branch serverfix set up to track remote branch refs/remotes/origin/serverfix. Switched to a new branch "serverfix" 

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

 $ git checkout -b sf origin/serverfix Branch sf set up to track remote branch refs/remotes/origin/serverfix. Switched to a new branch "sf" 

Dabar jūsų vietinis „ sf filialas automatiškai paspaudžia ir traukia su origin/serverfix .

60
14 янв. atsakymą pateikė Assaf Lavie sausio 14 d. 2011-01-14 20:07 '11, 20:07, 2011-01-14 20:07

„Progit“ knygoje nurodoma:

Stebėjimo filialai yra vietiniai filialai, kurie turi tiesioginį ryšį su nuotoliniu filialu.

Ne iš tikrųjų. Į SO klausimą „ Sunku suprasti git-fetch “ yra:

Tokios vietinės sekimo šakos, tik nuotolinio sekimo šakos, nėra.
Taigi, origin/master yra nuotolinio sekimo filialas, skirtas origin registrui.

Bet iš tikrųjų, kai tik susikursite nuorodą prieš srovę tarp:

  • vietos master
  • ir nuotolinio stebėjimo filialas, pavyzdžiui, origin/master

Tada jūs galite apsvarstyti master kaip vietinį stebėjimo skyrių. : jis seka nuotolinės origin/master sekimo filialą, kuris savo ruožtu seka aukštyninės repo origin filialą.

2019

23
15 янв. Atsakymą pateikė VonC Jan 15 2011-01-15 02:37 '11 at 2:37 2011-01-15 02:37

Taigi pridėjau stebėjimo filialą, kad galėčiau iš jo ištraukti naują filialą:

 git branch --set-upstream-to origin/Development new-branch 
3
08 дек. atsakymas duotas agrublev 08 dec. 2016-12-08 21:35 '16 at 21:35 pm 2016-12-08 21:35

Peržiūrėkite kitus klausimus apie „ žymes arba užduokite klausimą