简体   繁体   中英

Git rebase from one branch to another

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

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

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 HI and J commits lines with

pick F
pick G

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM