簡體   English   中英

Git 挑選所有提交

[英]Git cherry-pick picking all commits

假設我們有一個名為Master的分支和另一個名為Dev的分支,它基於Master

我們已經為不同的特性從Dev創建了幾個分支,它們都被合並到Dev中。

然后我們將Dev合並到Master中,所以現在它們很相似。

后來,我們從 dev 中得到了一個分支featureA ,然后我們將它合並到 dev 中。 然后我們還有另一個分支featureC從 dev 出來,它也被合並到 dev 中。

所以現在Dev包含featureAfeatureCMaster不是

我們要做的只是featureC上所做的更改包含到Master中。

所以我想在Master上使用cherry-pick 但是,當我這樣做時,它表明存在沖突,當我查看它時,它實際上向我顯示了源(開發)上featureAfeatureC所做的所有更改,我只能將它們全部添加到目標(主)

您可以看到下面的圖片進行演示。 我做了一個小例子以便更好地理解,我只能檢查兩個提交

所以現在我必須添加所有更改(來自 A 和 C),然后刪除在功能 A 中所做的更改,這樣做非常冒險,我相信

難道我做錯了什么? 因為我看不到使用cherry-pick的任何好處? 它的主要用途是從一個分支選擇一個特定的提交到另一個分支,而上面的情況並非如此。

在這種情況下,您可以在從featureCmaster的提交范圍內執行挑選。 這將起作用,並且是處理此問題的簡單方法。 假設您正在使用合並提交,該調用通常看起來像git cherry-pick -m1 featureC-merge-commit

但是,由於您在dev上也有其他更改,那些來自featureA的更改,您可能會遇到必須解決的沖突。 話雖如此,您不需要完全接受一方或另一方。 預計您可能需要編輯沖突代碼,使其僅包含您想要包含的更改。 如果您使用的工具不允許您執行此操作,或者您不知道如何使其執行此操作,那么您可能希望使用其他工具(例如常規文本編輯器)來執行這些變化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM