仅将最后 n 次提交移动到其他分支

Only move last n commits to other branch

我的结构目前是这样的:

master   A-B-C-D-E-F
                \
                 \
branch2           D2 - D3 - D4

而且我想将最后两个提交(D3D4)从 branch2 移动到 master 而不移动 D2。所以它应该是这样的:

master   A-B-C-D-E-F-D3-D4
                \
                 \
branch2           D2

如何实现?

请考虑主分支已经存在 - 我已经看到几个答案合并到新分支,但这在这里无效。

要扩展 Janez Kuhar 的评论,您需要做的是

git checkout master
git cherry-pick D3
git cherry-pick D4

其中 D3D4 是提交的 shas。

由于我们不希望有重复的提交,并且您表示要从 branch2 中删除这些提交,因此我们会这样做:

git revert D3^..D4

同样,D3D4 是提交的 shas。