Opret en gren i Git fra en anden gren

Jeg har to grene: master og dev

Jeg ønsker at oprette en "feature branch" fra dev-grenen.

I øjeblikket på grenen dev, jeg gør:

$ git checkout -b myfeature dev

... (noget arbejde)

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

Men efter at have visualiseret mine grene, fik jeg:

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

Jeg mener, at grenen ser ud til at være ff merged, og jeg forstår ikke hvorfor...

Hvad jeg'gør forkert?

Kan du forklare mig venligst, hvordan du gren ud fra en anden gren og push tilbage til det eksterne repository for feature-grenen?

Alt dette i en branching-model som den, der er beskrevet her.

Løsning

Hvis du kan lide metoden i det link, du har sendt, kan du kigge på Git Flow.

Det er et sæt scripts, som han har lavet til denne arbejdsgang.

Men for at besvare dit spørgsmål:

$ git checkout -b myFeature dev

Opretter MyFeature gren fra dev. Gør dit arbejde og derefter

$ git commit -am "Your message"

Flet nu dine ændringer til dev uden en hurtig fremføring

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

Skub nu ændringer til serveren

$ git push origin dev
$ git push origin myFeature

Og du vil se det, som du vil have det.

Kommentarer (13)

Hvis du vil oprette en ny gren fra en af de eksisterende grene i Git, skal du blot følge indstillingerne.

Først skal du ændre/checke ud i den gren, hvorfra du vil oprette en ny gren. Hvis du f.eks. har følgende grene som f.eks:

  • master
  • dev
  • branch1

Så hvis du ønsker at oprette en ny filial kaldet "subbranch_of_b1" under filialen med navnet "branch1", skal du følge nedenstående trin:

  1. Check ud eller skift til "branch1"

     git checkout branch1
  2. Opret nu din nye gren ved navn "subbranch_of_b1" under "branch1" ved hjælp af følgende kommando.

     git checkout -b subbranch_of_b1 branch1

    Ovenstående vil oprette en ny gren kaldet subbranch_of_b1 under grenen branch1 (bemærk, at branch1 i ovenstående kommando ikke er obligatorisk, da HEAD peger på den i øjeblikket, du kan dog præcisere det, hvis du er på en anden gren).

  3. Når du nu har arbejdet med subbranch_of_b1, kan du commit og push eller merge den lokalt eller eksternt.

]1

skub undergren_af_b1 til fjernbetjening

 git push origin subbranch_of_b1 
Kommentarer (7)

Arbejder samtidig på grenen dev. I dit scenarie sker det, at feature-grenen bevæger sig fremad fra spidsen af dev-grenen, men dev-grenen ændres ikke. Det er lettere at tegne som en lige linje, fordi det kan opfattes som en fremadrettet bevægelse. Du nåede frem til punkt A på dev, og derfra fortsatte du blot på en parallel vej. De to grene har ikke rigtig divergeret.

Hvis du nu laver et commit på dev, før du fusionerer, vil du igen begynde ved det samme commit, A, men nu vil features gå til C og dev til B. Dette vil vise den opdeling, du forsøger at visualisere, da grenene nu er divergeret.

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

Versus

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