我們正在兩個版本,一個小和一個主要的,每個都有自己的git
分支。在我們創建主要分支之前,一個功能最初被添加到小分支。之後,該功能從小分支中刪除(提交revert
),因爲我們決定在主要版本中引入該功能。合併git分支時,有一個恢復,其他不想要
所以,現在我們有一種情況,如果我們將小分支的變化合併到主分支中,它將包含回覆提交,這在主分支中是沒有意義的。
我考慮過的一個選擇是在恢復提交後對次分支提交使用cherry-pick
,但這有一個缺點,即基於次分支的任何分支都不能與主分支合併。 (我們必須繼續使用cherry-pick
來處理類似的事情。)雖然它的優點是具有更準確的歷史記錄,因爲不會包含恢復提交。
另一種選擇是將所有小分支合併到主分支中,並僅「忽略」還原更改。通過「忽略」,我的意思是在合併時手動還原已恢復的更改。從git的角度來看,這更好地保留了歷史記錄,但可能意味着在合併過程中會出現一些問題。
通常我們只在主分支中使用合併,而櫻桃採摘只是爲了在修改最新代碼之前將它們合併。所以我的選擇是第二種選擇,但我想知道這是否是處理這種情況的正確方法,或者是否有我缺少的東西。
編輯:這裏是ASCII藝術:-)
* (major)
| * (minor)
* | ...
| * revert feature on minor
* | major: unrelated commit
| * minor: unrelated commit
* |
|/
* common ancestor
|
* add feature to main branch
你的問題是缺少ASCII藝術:)。您是否恢復了僅在小分支上進行的提交或者是在分支或合併到小分支之前在主分支中創建的提交? – Chronial
在將功能添加到次分支之後但在將還原添加到次分支之前,小分支合併到主分支中了嗎? –
我不清楚這兩個分支上的功能提交是否通用。 –