我不喜歡Git的一件事是提交的數量。不要誤解我的意思,這是存儲(安全)工作的一種非常方便的方法,但從長遠來看,搜索的粒度太大。Git合併簡單vs壁球。什麼目的?如何跟蹤每個功能的一次提交?
讓我來描述以下情景,同時使用從分支的特徵分支開發。
- 特徵1從支開發並具有5條
- 特徵2從支開發和具有3提交
- 特徵3從特徵1支鏈且具有5 +2提交。
有三個分支的原因是因爲有一個團隊在存儲庫上工作。 特徵3假設特徵1完成,等待合併到開發。還有其他的用例,但這是最簡單的例子。
我的目標是在完成所有功能後在上開發三次提交。
使用Git合併/拉
上述場景效果很好。因爲實質上這兩個命令都將提交移動到開發分支。當合並特徵1時,發展參考它是五個提交。當特徵3將要合併時,只有最後兩個提交將合併到開發。
這個唯一的負面因素是開發得到太多的提交。這意味着,當合併到主所有「噪音」移動。所以我的目標沒有實現。
使用Git壁球
當特徵1合併合併,發展獲取一個新的提交這是所有特徵1聚集。這非常好,因爲現在只用一個提交來跟蹤功能。當Feature1被刪除時,所有中間提交不再可見,從而使跟蹤更容易。這也與諸如一個請求和一個github問題等概念相匹配。
當功能3將要合併有衝突,問題開始。爲了解決這個問題,你需要合併開發返回到功能3。與衝突。這導致一個新的提交沒有更改文件。現在我們合併了壁球Feature3到develop。
我的目標是實現的,但有很多微觀管理的犧牲。
問題/備註
據我理解,這是git的現實。我讀過的一條建議是創建一個保存壓縮合並提交的同級功能分支。使用兄弟分支進行拉取請求,從而強制每個要素使用一次提交。這不能解決嘗試合併其他分支時創建的衝突,尤其是從其他功能分支繼承的分支。
- 可以在同一個分支內做一個內部壁球嗎?我不這麼認爲,但是不要問。
- 我我錯過了什麼?
- 這是壁壘合併的權衡?解決可能沒有代碼更改的衝突?
- 追隨「每個功能一個提交」概念值得嗎?
- 如果沒有,那麼壁球的目的是什麼?誰在使用這個?
我讀過與重訂和合並後的模擬與復位壁球替代,但據我瞭解沒有解決提到合併特點3的開銷。
我不認爲'git rebase --onto'有效。 ''' 開發 - F [開發+壓扁特徵1] \ ABC [優點1] \ ED [特徵3] ''' 如果我執行'git的變基--onto dev的優點1 feature3'我得到 >致命的:需要一個修訂版 >不指向有效的提交:dev 在閱讀了更多關於它之後,我明白提交A,B,C不是由dev分支引用,因爲F commit是積累(擠壓)他們。 –