2014-01-15 74 views
7

我有以下情況:的Git從一個分支變基到另一個

      K---L new-feature 
         /
       H---I---J dev-team1 
      /
       E---F---G dev-main 
      /
A---B---C---D master 

我想只移動新功能(K --- L)分公司DEV-主要分支無(H --- I --- J)的形式DEV-TEAM1

   H---I---J dev-team1 
      /
       E---F---G---K---L dev-main 
      /
A---B---C---D master 

回答

10

git rebase--onto說法,做你所需要的。

git checkout new-feature 
git rebase --onto dev-main dev-team1 

# Now new-feature has commits K' and L' after G in dev-main. 
git checkout dev-main 
git merge --ff-only new-feature 

有關更多詳細信息,請參閱man page for "git rebase"。 (我也喜歡一個-i只添加到我感動,我覺得我的提交雙重檢查。)

你也可以使用git cherry-pick,特別是如果提交的數目小:

git checkout dev-main 
git cherry-pick K L 
+0

不要忘記櫻桃挑選支持一系列的提交 – onionjake

1

可以櫻桃挑選K和L提交。

git checkout dev-main 
git cherry-pick K 

如果有衝突,解決了他們,並做

git cherry-pick --continue 
git cherry-pick L 

修復衝突。

您也可以使用交互式底座。

git rebase -i head~5 

在打開的編輯器取代H I和J犯行與

pick F 
pick G 
+0

您可以通過在每行代碼前面有4個空格的縮進來製作答案和問題中的代碼塊。 – LopSae

相關問題