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.
839
3
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:
Oppretter MyFeature gren av dev. Gjør arbeidet ditt og deretter
Slå nå sammen endringene dine til dev uten å spole fremover.
Send nå endringene til serveren
Og du vil se det slik du vil ha det.
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:
Så hvis du vil opprette en ny gren med navnet "subbranch_of_b1" under grenen med navnet "branch1", følger du trinnene:
Gå til kassen eller endre til "gren1".
Opprett nå din nye gren kalt "subbranch_of_b1" under "branch1" ved hjelp av følgende kommando.
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).Etter å ha jobbet med subbranch_of_b1 kan du nå overføre og skyve eller slå den sammen lokalt eller eksternt.
push the subbranch_of_b1 to remote (skyv undergrenen_av_b1 til fjern)
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.
Versus