Domanda

I have the following case :

                          K---L new-feature
                         /
                H---I---J dev-team1
               /
              E---F---G dev-main
             /
A---B---C---D master

And I want to move only the new-feature (K---L) branch in dev-main branch without (H---I---J) form dev-team1

                H---I---J dev-team1
               /
              E---F---G---K---L dev-main
             /
A---B---C---D master
È stato utile?

Soluzione

git rebase has an --onto argument that does what you need.

git checkout new-feature
git rebase --onto dev-main dev-team1

# Now new-feature has commits K' and L' after G in dev-main.
git checkout dev-main
git merge --ff-only new-feature

See the man page for "git rebase" for more details. (I also like to add a -i just to double check that I'm moving the commits that I think I am.)

You could also use git cherry-pick, especially if the number of commits is small:

git checkout dev-main
git cherry-pick K L

Altri suggerimenti

You can cherry-pick K and L commits.

git checkout dev-main
git cherry-pick K

If you have conflicts, fix the them, and do

git cherry-pick --continue
git cherry-pick L

Fix the conflicts.

You can also use interactive rebase.

git rebase -i head~5

In the opened editor replace H I and J commits lines with

pick F
pick G
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top