[英]Managing changes from develop branch into feature prior to push (git)
我過去工作過的大多數團隊在使用 Git 時都遵循相同的工作流程(有一些微小的變化):
develop
分支( git checkout develop
)git checkout -b feature/XYZ-123
)git add. && git commit -m "some commit message"
), then check develop
back out, pull it ( git checkout develop && git pull
)develop
合並到其中( git checkout feature/XYZ-123 && git merge develop
)git push -u origin feature/XYZ-123
)並創建一個 PR 我們將其稱為“合並方法”。 好處是,自從您創建分支以來要develop
的任何更改現在都合並到您的分支中。 因此,當您創建 PR 時,與develop
沒有合並沖突,代碼審查者可以看到您的分支和develop
之間的干凈、無沖突的差異。
我現在正在一個團隊工作,該團隊在合並步驟之前具有類似的流程,但是他們沒有將develop
合並到我的功能分支中,而是要求從origin/develop
進行變基。 所以實際的步驟是:
git checkout develop
git checkout -b feature/XYZ-123
git add. && git commit -m "some commit message"
git checkout develop && git pull
git checkout feature/XYZ-123
origin/dev
變基git push -u origin feature/XYZ-123
我們將其稱為“變基方法”。 它也產生了無合並沖突的 PR,但顯然它必須與上面解釋的合並方法有不同的優點/缺點。
我想知道這些優點/缺點是什么。 Merge 方法在 Rebase 方法中缺乏什么,反之亦然? 什么時候應該使用一種方法而不是另一種方法?
但顯然它必須與上面解釋的合並方法有不同的優點/缺點
並不真地。 在反向合並(我稱之為)和變基之間,最終效果完全相同,即嘗試從develop
中獲取所有最新更改,以便(1)可以准確測試功能分支和(2)減少合並到develop
時發生合並沖突的機會。
反向合並和變基之間的主要明顯區別是功能分支上缺少額外的合並提交。 這使得 rebase 很有吸引力。 所以:
develop
開始了分支。但這里有一些反訴:
如果有即將到來的沖突,變基會使解決這些沖突變得更加困難。
推送形成拉取請求后,您不能變基,因為這會重寫共享歷史; 而您可以隨時反向合並。
我個人兩者都用; 我在初始推送之前重新設置拉取請求,如果拉取請求存在很長時間,我會定期反向合並。 尤其是在實際批准和合並之前。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.