2017-07-28 48 views
1

這是我的情景:就拿最近的N提交當前分支,並將其應用到另一個分支

  • 我在master分支
  • master分支,分支feature1創建
  • 多次提交加入feature1和其他提交加入master
  • 現在,我要帶ONLY最後N從承諾並將它們應用於master

我想從這個去:

     (branch) feature1: f1 > f2 > f3 > f4 
        /
(branch) master: A > B > C > D 

要這樣:

     (branch) feature1: f1 > f2 > f3 > f4 
        /
(branch) master: A > B > C > D > f3 > f4 

回答

3

可以觀察你的最後一次哈希通過運行提交

git log -N其中N是您想要查看的提交哈希數。

,然後你可以做

git cherry-pick {firstHash}^..{lastHash}其中{firstHash}{secondHash}開始點和結束你的櫻桃採摘點,其狀如閉區間[firstHash,lastHash],因此,所有將採取之間也犯。

注意:firstHash必須出現在lastHash之前,原因很明顯。

如果你不想他們被COMMITED,你只希望他們的內容,你可以做

git cherry-pick {firstHash}^..{lastHash} --no-commit

在你的情況,如果我們考慮(F1,F2 ..)是犯哈希這應該做的鑽:

git checkout master 
git cherry-pick f3^..f4 

如果有任何合併衝突你會要解決這些問題,並呼籲git cherry-pick --continue(有時GIT中是bash固執它,它不向你展示),以能夠繼續進行下一次提交。

在任何情況下,你應該檢查櫻桃挑選的文件作爲@Erhan提到 - https://git-scm.com/docs/git-cherry-pick

+2

它的工作!通過使用'--no-commit','cherry-pick'將所有來自'feature1'的提交合併爲一個,並將其添加到'master'的頂部。如果不使用'--no-commit',則所有提交都會與''master'一起被添加,以及合併提交。 –

相關問題