[英]Git cherry-pick picking all commits
假設我們有一個名為Master
的分支和另一個名為Dev
的分支,它基於Master
。
我們已經為不同的特性從Dev
創建了幾個分支,它們都被合並到Dev
中。
然后我們將Dev
合並到Master
中,所以現在它們很相似。
后來,我們從 dev 中得到了一個分支featureA
,然后我們將它合並到 dev 中。 然后我們還有另一個分支featureC
從 dev 出來,它也被合並到 dev 中。
所以現在Dev
包含featureA
和featureC
而Master
不是
我們要做的只是將featureC
上所做的更改包含到Master
中。
所以我想在Master
上使用cherry-pick
。 但是,當我這樣做時,它表明存在沖突,當我查看它時,它實際上向我顯示了源(開發)上featureA
和featureC
所做的所有更改,我只能將它們全部添加到目標(主)
您可以看到下面的圖片進行演示。 我做了一個小例子以便更好地理解,我只能檢查兩個提交
所以現在我必須添加所有更改(來自 A 和 C),然后刪除在功能 A 中所做的更改,這樣做非常冒險,我相信
難道我做錯了什么? 因為我看不到使用cherry-pick的任何好處? 它的主要用途是從一個分支選擇一個特定的提交到另一個分支,而上面的情況並非如此。
在這種情況下,您可以在從featureC
到master
的提交范圍內執行挑選。 這將起作用,並且是處理此問題的簡單方法。 假設您正在使用合並提交,該調用通常看起來像git cherry-pick -m1 featureC-merge-commit
。
但是,由於您在dev
上也有其他更改,那些來自featureA
的更改,您可能會遇到必須解決的沖突。 話雖如此,您不需要完全接受一方或另一方。 預計您可能需要編輯沖突代碼,使其僅包含您想要包含的更改。 如果您使用的工具不允許您執行此操作,或者您不知道如何使其執行此操作,那么您可能希望使用其他工具(例如常規文本編輯器)來執行這些變化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.