我有一堆提交的操作系统项目,我想拉出最后说20提交到另一个分支,所以我可以拉请求。Git从以前的提交范围创建分支?
我该怎么做?原因是我可能有150次提交,但其中大部分都是为了一个更大的贡献,这还没有准备好。但下一个版本即将发布。
谢谢!
我有一堆提交的操作系统项目,我想拉出最后说20提交到另一个分支,所以我可以拉请求。Git从以前的提交范围创建分支?
我该怎么做?原因是我可能有150次提交,但其中大部分都是为了一个更大的贡献,这还没有准备好。但下一个版本即将发布。
谢谢!
你可以用cherry-pick
来做到这一点。如果您的long_branch
历史是这样的:
A-B <-- master
\
C-D-E-F-G-H <-- long_branch
并且要到H移动的,也就是说,F的内容,以不同的分支,比方说,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.
这真的帮助我摆脱合并冲突。 +1 – 2016-07-05 17:46:47