Sukurti "Git" šaką iš kitos šakos

Turiu dvi šakas: master ir dev

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.

Sprendimas

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.

Komentarai (13)

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:

  • master
  • dev
  • šaką1

Taigi, jei norite sukurti naują šaką pavadinimu "subbranch_of_b1" po šaka pavadinimu "branch1", atlikite šiuos veiksmus:

  1. Atsiregistruokite arba persikelkite į "branch1"

     git checkout branch1
  2. 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).

  3. Dabar, padirbėję su šakos_iš_b1, galite ją patvirtinti ir perkelti arba sujungti vietoje arba nuotoliniu būdu.

1

perkelkite subšaką_iš_b1 į nuotolinį įrenginį

 git push origin subbranch_of_b1 
Komentarai (7)

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
Komentarai (0)