我有一堆OS项目的提交,我想把最后说的20个提交拉到另一个分支,所以我可以提取请求.
我怎么能这样做?原因是我可能有150次提交,但其中大多数都是为了更大的贡献,还没有准备好.但下一个版本即将发布.
谢谢!
Amb*_*ber 72
你可以这样做cherry-pick.如果您的历史long_branch看起来像这样:
A-B <-- master
\
C-D-E-F-G-H <-- long_branch
Run Code Online (Sandbox Code Playgroud)
并且你想把F到H的内容移动到另一个分支,比如说short_branch,它基于master:
git checkout master -b short_branch
Run Code Online (Sandbox Code Playgroud)
这使
A-B <-- master, short_branch
\
C-D-E-F-G-H <-- long_branch
Run Code Online (Sandbox Code Playgroud)
然后...(注意提交范围是E..H;左边是范围的非包含性)
git cherry-pick E..H
Run Code Online (Sandbox Code Playgroud)
这使:
F'-G'-H' <-- short_branch
/
A-B <-- master
\
C-D-E-F-G-H <-- long_branch
Run Code Online (Sandbox Code Playgroud)
请注意,我指的是新提交的F',G',H'-这是因为当他们将含有相同的有效变化F,G以及H,他们不会实际提交相同(由于不同的父母+提交时间).
你想要20个提交保留在当前分支上吗?如果没有,那么保持对当前分支的引用20提交:
git checkout -b current_branch_save current_branch~20
Run Code Online (Sandbox Code Playgroud)
然后,使用rebase移动最后20个提交
git checkout current_branch
git rebase --onto another_branch current_branch~20 current_branch
Run Code Online (Sandbox Code Playgroud)
现在你有了current_branch_save,你的~100'还没有准备好'提交,而last_branch上有current_branch,最后20个.
| 归档时间: |
|
| 查看次数: |
14631 次 |
| 最近记录: |