Opprett en gren i Git fra en annen gren

Jeg har to grener: master og dev

Jeg vil opprette en "funksjonsgren" fra grenen dev.

For øyeblikket på grenen dev, gjør jeg det:

$ git checkout -b myfeature dev

... (noe arbeid)

$ git commit -am "blablabla"
$ git push origin myfeature

Men etter å ha visualisert grenene mine, fikk jeg:

--**master**
------0-----0-----0-----0-----0
------------------------**dev**----**myfeature**

Jeg mener at grenen virker ff slått sammen, og jeg forstår ikke hvorfor ...

Hva gjør jeg galt?

Kan du forklare meg hvordan du forgrener deg fra en annen gren og skyver tilbake til det eksterne depotet for funksjonsgrenen?

Alt dette i en forgreningsmodell som den som er beskrevet her.

Løsning

Hvis du liker metoden i lenken du har lagt ut, ta en titt på Git Flow.

Det er et sett med skript han opprettet for den arbeidsflyten.

Men for å svare på spørsmålet ditt:

$ git checkout -b myFeature dev

Oppretter MyFeature gren av dev. Gjør arbeidet ditt og deretter

$ git commit -am "Your message"

Slå nå sammen endringene dine til dev uten å spole fremover.

$ git checkout dev
$ git merge --no-ff myFeature

Send nå endringene til serveren

$ git push origin dev
$ git push origin myFeature

Og du vil se det slik du vil ha det.

Kommentarer (13)

Hvis du vil opprette en ny gren fra en av de eksisterende grenene i Git, følger du bare alternativene.

Endre / sjekk først inn i grenen der du vil opprette en ny gren. For eksempel, hvis du har følgende grener som:

  • master
  • dev
  • gren1

Så hvis du vil opprette en ny gren med navnet "subbranch_of_b1" under grenen med navnet "branch1", følger du trinnene:

  1. Gå til kassen eller endre til "gren1".

     git checkout branch1
  2. Opprett nå din nye gren kalt "subbranch_of_b1" under "branch1" ved hjelp av følgende kommando.

     git checkout -b subbranch_of_b1 branch1

    Ovennevnte vil opprette en ny gren kalt subbranch_of_b1 under grenen branch1 (merk at branch1 i kommandoen ovenfor ikke er obligatorisk siden HEAD for øyeblikket peker til den, men du kan presisere den hvis du er på en annen gren).

  3. Etter å ha jobbet med subbranch_of_b1 kan du nå overføre og skyve eller slå den sammen lokalt eller eksternt.

]1

push the subbranch_of_b1 to remote (skyv undergrenen_av_b1 til fjern)

 git push origin subbranch_of_b1 
Kommentarer (7)

Utfør samtidig arbeid på dev-grenen. Det som skjer er at i scenariet ditt beveger funksjonsgrenen seg fremover fra spissen av dev-grenen, men dev-grenen endres ikke. Det er lettere å tegne som en rett linje, fordi det kan tenkes på som bevegelse fremover. Du gjorde det til punkt A på dev, og derfra fortsatte du ganske enkelt på en parallell bane. De to grenene har egentlig ikke divergert.

Nå, hvis du gjør en commit på dev, før du slår sammen, vil du igjen begynne på samme commit, A, men nå vil funksjoner gå til C og dev til B. Dette vil vise splittelsen du prøver å visualisere, ettersom grenene nå har divergert.

*-----*Dev-------*Feature

Versus

       /----*DevB
*-----*DevA
       \----*FeatureC
Kommentarer (0)