背景
前段時間為了遷移一個舊服務到新專案,由此產生了一個巨大的PR,為了方便Code Review,最侄訓于檔案夾,將其拆分成了多個較小的PR;現在這里記錄下,后面可能還會需要,
演示
為了方便演示,我創建了如下一個 large_pr_branch 到main的大PR,99+的檔案修改

通過觀察,我們可以將這個大PR,基于專案的分層結構,拆成5個較小的PR,即 NewApi -> Core -> Infrastructure -> UnitTest -> IntegrationTest,
第一步 獲取差分檔案
首先通過 git diff 命令得到每一層相較于main分支的差分檔案(diff file),以 NewApi為例
git diff main large_pr_branch -- NewApi > newApi.diff
newApi.diff檔案已經生成,

打開可以看到它包含了NewApi檔案夾下所有的修改

第二步 創建接收分支
接下來我們基于main分支創建一個新分支,用來后面接收newApi.diff
git checkout main
git checkout -b newapi_folder_branch
第三步 應用差分檔案
最后使用 git apply 命令將newApi.diff應用到新分支
git apply newApi.diff
可以看到我們只將NewApi檔案夾下的45個檔案修改引入到新分支 newapi_folder_branch

后面的事就簡單了,提交修改之后,我們只需要基于 newapi_folder_branch 分支創建PR到main分支,這樣的得到PR,短小精悍,不會嚇到同事^,
剩余檔案夾重復上面的步驟即可,
如果你有更好的方式拆分大PR,歡迎評論區留言討論^
參考鏈接
- https://medium.com/@groksrc/protip-how-to-split-large-branches-into-small-pull-requests-81d607660c05
本文來自博客園,作者:幾秋,轉載請注明原文鏈接:https://www.cnblogs.com/netry/p/git-split-large-pr.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/506058.html
標籤:其他
