我有一個當前的分支系統:
- deploy
- feature/1
我將分支合并feature/1到deploy選擇“squash commits”,但還沒有洗掉分支本身。然后我feature/2從feature/1(意思是feature/2包含來自 的所有提交feature/1)創建了一個新分支。但現在,當我想合并feature/2到deploy和創建合并請求它表明一切從改變feature/2是沖突和顯示所有的提交(與合并是那些feature/1),但我希望它像在第一合并請求,所以它就只會顯示的變化feature/2是不是在feature/1在第一次合并到的那一刻deploy。
我仍然有合并請求和分支feature/1。我如何實作這樣的目標?第一個合并請求中有兩個選項可用:“revert”和“cherry-pick”,我閱讀了有關這些按鈕的 GitLab 檔案,但我仍然不確定它們的作用以及在這種情況下選擇什么。如果我需要繪制它,它看起來像這樣:
---deploy------ok-------------?
----feature/1--| |
---feature/2--|
uj5u.com熱心網友回復:
該分支deploy已包含feature/1. 由于feature/2還包含相同的更改,您會遇到合并沖突。
一般來說,如果在feature/1與deploy您合并后創建feature/2fromdeploy而不是feature/1問題將不存在。
但由于為時已晚,我建議采用以下簡單方法:
- 從 中創建另一個分支
deploy,我們稱之為feature/2.2。 - Cherry 將 的
feature/2(不屬于 的feature/1)的所有新提交挑選到新分支。
然后,您將能夠輕松地將新分支與部署合并。
詳細資訊:
這是您當前案例中的樣子:
deploy => d1-d2-d3-f'------------f1-f2-f3-ff1-ff2-ff3
/ /?
feature/1 => f1-f2-f3 /?
| /?
feature/2 => f1-f2-f3-ff1-ff2-ff3
該分支deploy已經包含提交f',它是f1-f2-f3.
所以,如果你嘗試合并feature/2使用deploy,git會盡量把f1-f2-f3-ff1-ff2-ff3上面的f'已經具有了變化f1-f2-f3。這就是您遇到合并沖突的地方。
因此,為了解決這個問題,我們只是從中創建一個新分支deploy,因此f1-f2-f3不再存在,只需挑選另一個ff1-ff2-ff3不會有合并沖突的分支。然后我們可以像這樣將它們合并回部署(通過壓縮ff1-ff2-ff3到ff'):
deploy => d1-d2-d3-f'------------ff'
| /
feature/2.2 => d1-d2-d3-f'-ff1-ff2-ff3
/ / /
feature/2 => f1-f2-f3-ff1-ff2-ff3
|
feature/1 => f1-f2-f3
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/336977.html
