2013-06-20 29 views
1

我有一個feature/branch,在各個點在其歷史中合併了develop分支。我想把所有的非合併提交(即只有最初提交到特性分支的提交)並將它們複製到一個新分支(基於主分支),以便我沒有任何對於develop唯一的提交分支在新的分支。如何將一系列非合併提交複製到新分支?

我找到了一種方法來列出我想要的所有提交,但我不確定將它們複製到新分支的最佳方法。要列出我想要的提交,我可以運行這個命令:

git log feature/branch ^develop ^master --no-merges 

我怎樣才能通過上述複製到一個新的分支獲得的提交輸出列表(範圍)?我認爲挑選或重新分配是解決問題的方法,但是在嘗試了幾種方法後,我還沒有找到正確的選擇來做到這一點。謝謝!

+1

你試過git rebase --interactive嗎?只需在特徵/分支相同的位置創建新分支,並在主設備上重新綁定它 – MarcH

回答

0

在PowerShell中

git log feature/branch ^develop ^master --no-merges --format="%H" 
    | ForEach-Object { git cherry-pick $_ } 

循環將有效地阻止在第一次衝突的工作,雖然。

0

我建議使用一個管道水平的命令。對於Unix外殼:

set -e -u 
git rev-list feature/branch ^develop ^master --no-merges \ 
    | while read rev; do git cherry-pick "$rev"; done 
相關問題