Δημιουργία ενός κλάδου στο Git από έναν άλλο κλάδο

Έχω δύο υποκαταστήματα: master και dev

Θέλω να δημιουργήσω ένα "feature branch" από το dev branch.

Επί του παρόντος, στον κλάδο dev, κάνω:

$ git checkout -b myfeature dev

... (λίγη δουλειά)

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

Αλλά, αφού απεικόνισα τα κλαδιά μου, πήρα:

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

Θέλω να πω ότι ο κλάδος φαίνεται να συγχωνεύεται, και δεν καταλαβαίνω γιατί...

Τι κάνω λάθος;

Μπορείτε να μου εξηγήσετε παρακαλώ πώς γίνεται η διακλάδωση από έναν άλλο κλάδο και το push back στο απομακρυσμένο αποθετήριο για τον κλάδο χαρακτηριστικών;

Όλα αυτά σε ένα μοντέλο διακλάδωσης όπως αυτό που περιγράφεται εδώ.

Λύση

Αν σας αρέσει η μέθοδος στο σύνδεσμο που δημοσιεύσατε, ρίξτε μια ματιά στο Git Flow.

Είναι ένα σύνολο σεναρίων που δημιούργησε για αυτή τη ροή εργασίας.

Αλλά για να απαντήσω στην ερώτησή σας:

$ git checkout -b myFeature dev

Δημιουργεί τον κλάδο MyFeature του dev. Κάντε τη δουλειά σας και μετά

$ git commit -am "Your message"

Τώρα συγχωνεύστε τις αλλαγές σας στο dev χωρίς fast-forward

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

Τώρα προωθήστε τις αλλαγές στο διακομιστή

$ git push origin dev
$ git push origin myFeature

Και θα το δείτε όπως το θέλετε.

Σχόλια (13)

Αν θέλετε να δημιουργήσετε έναν νέο κλάδο από οποιονδήποτε από τους υπάρχοντες κλάδους στο Git, απλά ακολουθήστε τις επιλογές.

Πρώτα αλλάξτε/επισκεφθείτε τον κλάδο από τον οποίο θέλετε να δημιουργήσετε έναν νέο κλάδο. Για παράδειγμα, αν έχετε τα ακόλουθα κλαδιά όπως: 1:

  • master
  • dev
  • branch1

Έτσι, αν θέλετε να δημιουργήσετε ένα νέο κλάδο με όνομα "subbranch_of_b1" κάτω από τον κλάδο με όνομα "branch1" ακολουθήστε τα βήματα:

  1. Κάντε checkout ή αλλάξτε στο "branch1"

     git checkout branch1
  2. Τώρα δημιουργήστε τον νέο σας κλάδο με όνομα "subbranch_of_b1" κάτω από τον "branch1" χρησιμοποιώντας την ακόλουθη εντολή.

     git checkout -b subbranch_of_b1 branch1

    Το παραπάνω θα δημιουργήσει ένα νέο κλάδο με όνομα subbranch_of_b1 κάτω από τον κλάδο branch1 (σημειώστε ότι το branch1 στην παραπάνω εντολή δεν είναι υποχρεωτικό, αφού το HEAD δείχνει προς το παρόν σε αυτό, μπορείτε όμως να το προσδιορίσετε με ακρίβεια αν βρίσκεστε σε διαφορετικό κλάδο).

  3. Τώρα αφού εργαστείτε με το υποκλάδο_του_b1 μπορείτε να το δεσμεύσετε και να το προωθήσετε ή να το συγχωνεύσετε τοπικά ή απομακρυσμένα.

1

σπρώξτε τον υποκλάδο_του_b1 στο απομακρυσμένο

 git push origin subbranch_of_b1 
Σχόλια (7)

Κάντε ταυτόχρονη εργασία στον κλάδο dev. Αυτό που συμβαίνει είναι ότι στο σενάριό σας ο κλάδος των χαρακτηριστικών κινείται προς τα εμπρός από την άκρη του κλάδου dev, αλλά ο κλάδος dev δεν αλλάζει. Είναι ευκολότερο να το σχεδιάσετε ως ευθεία γραμμή, επειδή μπορεί να θεωρηθεί ως κίνηση προς τα εμπρός. Καταφέρατε να φτάσετε στο σημείο Α στο dev, και από εκεί απλά συνεχίσατε σε μια παράλληλη διαδρομή. Οι δύο κλάδοι δεν έχουν πραγματικά αποκλίνει.

Τώρα, αν κάνετε μια δέσμευση στην dev, πριν από τη συγχώνευση, θα ξεκινήσετε και πάλι από την ίδια δέσμευση, το Α, αλλά τώρα τα features θα πάνε στο C και η dev στο B. Αυτό θα δείξει τη διάσπαση που προσπαθείτε να απεικονίσετε, καθώς οι κλάδοι έχουν πλέον αποκλίνει.

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

Versus

       /----*DevB
*-----*DevA
       \----*FeatureC
Σχόλια (0)