Git从以前的提交范围创建分支



我有一堆操作系统项目的提交,我想把最后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',这是因为尽管它们将包含与FGH相同的有效更改,但它们不会是实际相同的提交(由于父级+提交时间不同)。

是否希望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个。

最新更新