我在一个分支上提交了ABCD,并希望将ABC合并到另一个分支上.
我知道你可以一个接一个地执行git cherry-pick,我的问题是我是否可以将这些提交组合在一起并希望能够进行壁球.
像专制组织所说,git rebase可能就是你想要的.
一个例子:
假设您已经A-B-C-D并希望合并A-B-C到Y.创建克隆C并将克隆重新克隆到Y:
git checkout -b C_copy C
git rebase --onto Y A~1 C_copy # <= --onto [target] [source] [what]
Run Code Online (Sandbox Code Playgroud)
检查一切是否顺利,并在必要时解决冲突.
现在你已经C_copy掌握了Y,像这样:Y-[A_copy]-[B-copy]-C_copy
您可以使用交互式rebase编辑它,例如压缩它(假设您仍在使用C_copy):
git rebase -i HEAD~3
Run Code Online (Sandbox Code Playgroud)
如果出现问题,你可以扔掉,C_copy因为它不会影响C.
现在,您可以快进Y到C_copy或合并使用它git merge --no-ff(指定--no-commit编辑您的承诺,如果你愿意的话):
git checkout Y
git merge --no-ff [--no-commit] C_copy
Run Code Online (Sandbox Code Playgroud)