Turiu dvi šakas: master ir dev
Iš dev šakos noriu sukurti "funkcijų šaką".
Šiuo metu šakoje dev aš darau:
$ git checkout -b myfeature dev
... (šiek tiek darbo)
$ git commit -am "blablabla"
$ git push origin myfeature
Tačiau, vizualizavęs savo šakas, gavau:
--**master**
------0-----0-----0-----0-----0
------------------------**dev**----**myfeature**
Aš turiu omenyje, kad šaka atrodo ff sujungti, ir aš nesuprantu, kodėl...
Ką aš darau ne taip?
Ar galite man paaiškinti, prašau, kaip jūs atšakojate šaką iš kitos šakos ir išstumiate atgal į nuotolinę saugyklą funkcijų šaką?
Visa tai esant tokiam šakojimosi modeliui kaip čia aprašytas.
Jei jums patinka jūsų pateiktoje nuorodoje nurodytas metodas, pažiūrėkite Git Flow.
Tai'jo sukurtų scenarijų rinkinys, skirtas šiam darbo srautui.
Tačiau atsakydamas į jūsų klausimą:
$ git checkout -b myFeature dev
Sukuria atšaką MyFeature nuo dev. Atlikite savo darbą ir tada
$ git commit -am "Your message"
Dabar sujunkite savo pakeitimus su dev be greitojo perkėlimo
$ git checkout dev
$ git merge --no-ff myFeature
Dabar perkelkite pakeitimus į serverį
$ git push origin dev
$ git push origin myFeature
Ir pamatysite jį tokį, kokio norite.
Jei norite sukurti naują šaką iš bet kurios "Git" esamos šakos, tiesiog atlikite šias parinktis.
Pirmiausia pakeiskite / patikrinkite šaką, iš kurios norite sukurti naują šaką. Pavyzdžiui, jei turite šias šakas, pvz:
Taigi, jei norite sukurti naują šaką pavadinimu "subbranch_of_b1" po šaka pavadinimu "branch1", atlikite šiuos veiksmus:
Atsiregistruokite arba persikelkite į "branch1"
git checkout branch1
Dabar sukurkite naują šaką, pavadintą "subbranch_of_b1", po "branch1", naudodami šią komandą.
git checkout -b subbranch_of_b1 branch1
Atlikus šią komandą bus sukurta nauja šaka, pavadinta subbranch_of_b1, esanti po šaka branch1 (atkreipkite dėmesį, kad branch1
pirmiau pateiktoje komandoje nėra privaloma, nes šiuo metu į ją nukreipia HEAD, tačiau galite ją patikslinti, jei esate kitoje šakoje).
Dabar, padirbėję su šakos_iš_b1, galite ją patvirtinti ir perkelti arba sujungti vietoje arba nuotoliniu būdu.
perkelkite subšaką_iš_b1 į nuotolinį įrenginį
git push origin subbranch_of_b1
Tuo pačiu metu dirbkite su dev
atšaka. Jūsų scenarijaus atveju funkcijų šaka juda į priekį nuo dev šakos galo, tačiau dev šaka nesikeičia. Tai'lengviau nubraižyti kaip tiesią liniją, nes ją galima įsivaizduoti kaip judėjimą į priekį. Jūs pasiekėte dev tašką A, o iš ten tiesiog tęsėte lygiagretų kelią. Dvi šakos iš tikrųjų nesiskyrė.
Dabar, jei prieš sujungimą atliksite pakeitimą dev sistemoje, vėl pradėsite nuo to paties pakeitimo A, bet dabar funkcijos bus nukreiptos į C, o dev - į B. Tai parodys skilimą, kurį bandote įsivaizduoti, nes šakos dabar išsiskyrė.
*-----*Dev-------*Feature
Versus
/----*DevB
*-----*DevA
\----*FeatureC