我有以下情况:
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
答案 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