說我有一個主機和一個發展分支 - 開發有很多承諾是高手並不爲簡單起見:Git的 - 從具體的合併犯起
Develop:
Commit 1
Commit 2
Commit 3
Commit 4
Commit 5
Commit 6
我希望削減從一個新的特性分支掌握沒有任何這些承諾在開發。
但棘手的部分是,我想合併開發成我的功能從提交3起。
我可以選櫻桃,但實際上比我簡單的例子有很多,更多的承諾。
如何才能做到這一點?
說我有一個主機和一個發展分支 - 開發有很多承諾是高手並不爲簡單起見:Git的 - 從具體的合併犯起
Develop:
Commit 1
Commit 2
Commit 3
Commit 4
Commit 5
Commit 6
我希望削減從一個新的特性分支掌握沒有任何這些承諾在開發。
但棘手的部分是,我想合併開發成我的功能從提交3起。
我可以選櫻桃,但實際上比我簡單的例子有很多,更多的承諾。
如何才能做到這一點?
你能摘櫻桃:
git checkout -b newfeature master
git cherry-pick commit2..develop
如果語法不直接支持,在那裏,使用:
git cherry-pick $(git rev-list commit2..develop)
注:先在a..b
範圍標識提交不包括在修訂清單中,謝謝Carl
O無論如何,它看起來像是rebase --root ... --onto
的情況。我總是在手冊頁中查找具體內容。
如果承諾3-6不依賴於承諾1-2,您可以克隆的分支,然後使用交互式衍合到開發分支分成兩個分支,從而使歷史看起來像:
develop1: master commit1 commit2 develop2:master commit3 commit4 commit5 commit6
然後,您可以合併使用合併中的兩個不同分支。否則,您將不得不使用櫻桃採摘作爲其他答案說。這會起作用,但你會失去分支關係的歷史。
一般而言,爲您正在處理的每個特定主題創建一個新的分支是有意義的,更多的是在細節方面。當地的分支機構很便宜,甚至遠程分支機構也不是那麼糟糕。如果你把東西放在不同的分支上,組織你的思路會容易得多。它還鼓勵您以一種方式工作,即儘可能將問題分爲獨立的模塊化部分,這將鼓勵更好的系統設計,提高可測試性等。