共同開發一個專案的小筆記2 - rebase 與 squash
之前在共同開發一個專案的小筆記 整理過發一個pull request(PR) 需要走過的流程。這篇將進一步認識如何透過rebase
和 squash
讓 Network graph 更乾淨,進而增加開發紀錄的可讀性,也讓 PR 更容易被review。
Rebase
當我們把專案fork下來,並且開了feature branch加以開發,這個專案如果也正在被進行開發,此時我們就會用到rebase
。rebase
是用來更新(re) feature branch 的根基(base),合併不同分支的進度。可以參考以下流程:
- 開了一個 feature branch,並且發了一些commit。
- 需要正在開發的 feature 在 project 最新狀態下的表現
- Snyc fork
- rebase
- 查看 feature
Squash
當我們在feature branch上完成了新功能的開發,PR之前,好的做法是將 commit 整理過後再發PR,簡化開發紀錄,
提供其他人正確濃度的訊息量,此時我們就會用到squash
。
首先,我們可以透過git log
或是 git graph 要找到我們要整理commit的起點(e.g, 3ecccef
),接著進入rebase 的 interactive mode
1 | pick d34548f Add feature 1 |
接著就是整理 commit,將要留下來的commit以pick
做標記(維持不變),將被融合的commit以squash
做標記。
1 | pick d34548f Add feature 1 |
整理過後的 log 則會是,
1 | pick d34548f Add feature 1 |
完成後,就可以發 PR 了。