Git从一个分支到另一个分支

时间:2014-01-15 21:23:16

标签: git branch git-branch git-rebase git-interactive-rebase

我有以下情况:

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

我想只移动 dev-main 分支中的 new-feature (K --- L)分支(H --- I --- J)表格 dev-team1

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

2 个答案:

答案 0 :(得分:12)

git rebase有一个--onto参数可以满足您的需求。

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

有关详细信息,请参阅man page for "git rebase"。 (我还想添加-i只是为了仔细检查我正在移动我认为我的提交。)

您也可以使用git cherry-pick,特别是如果提交次数很少:

git checkout dev-main
git cherry-pick K L

答案 1 :(得分:1)

你可以挑选K和L提交。

git checkout dev-main
git cherry-pick K

如果您有冲突,请修复它们,然后执行

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

解决冲突。

您也可以使用交互式rebase。

git rebase -i head~5

在打开的编辑器中,替换H I和J使用

提交行
pick F
pick G