我有一堆提交的操作系統項目,我想拉出最後說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