我有一堆操作系统项目的提交,我想把最后20个提交拉到另一个分支中,这样我就可以拉请求了。
我怎么能这么做?原因是我可能有150个提交,但其中大多数都是为了更大的贡献,这还没有准备好。但下一个版本即将发布。
谢谢!
您可以使用cherry-pick
执行此操作。如果您的long_branch
历史记录如下:
A-B <-- master
C-D-E-F-G-H <-- long_branch
并且您希望将F到H的内容移动到另一个分支,例如short_branch
,它基于master
:
git checkout master -b short_branch
它给出
A-B <-- master, short_branch
C-D-E-F-G-H <-- long_branch
然后。。。(注意提交范围为E..H
;左侧不包括该范围)
git cherry-pick E..H
它给出:
F'-G'-H' <-- short_branch
/
A-B <-- master
C-D-E-F-G-H <-- long_branch
请注意,我将新提交称为F'
、G'
、H'
,这是因为尽管它们将包含与F
、G
和H
相同的有效更改,但它们不会是实际相同的提交(由于父级+提交时间不同)。
是否希望20个提交保留在当前分支上?如果没有,那么保留对当前分支的引用20使用提交
git checkout -b current_branch_save current_branch~20
然后,使用重基准移动最后20个提交
git checkout current_branch
git rebase --onto another_branch current_branch~20 current_branch
现在,您有了current_branch_save和大约100个"未完全准备好"提交,current_branch在另一个分支上,最后20个。