Github/Bitbucket 裡面有很多功能,可能不是每個人都用過,而不同團隊的文化也不同,最近恰好遇到需要用這個功能,於是看了一下這個功能的用法。
目的
為什麼要提交一個 PR
(Pull Request)?
當開發者完成一個功能時,亦即,在一般情況下,開發者在一個他專屬的分支上進行功能開發,然後完成該功能。
這時,開發者需要將這個功能合併回 master
分支,但他不可能再沒有被檢查過的情況下做合併,因此需要該專案的維護者或是其他工程師一起合作檢查。
因此,開發者需要告知其他人,請他們來檢查,甚至在檢查後,大家一起討論並且修改不足或是錯誤的地方,最後才合併。
Pull Request
就是為此而存在。
功能
Pull Request
是什麼?
- 通知:告知相關人士一起來檢查
- 討論:讓討論不分散,集中在某個畫面上,致使訊息不流失
- 修改:進行錯誤或是改善,根據討論而做出的修改 (follow-up commit) 會標示在這邊
流程
一個 pull request
的誕生如下:
- 開發者在自己的分支上開發一個功能,然後完成
- 開發者將自己的分支提交上去
- 開發者建立
PR
,告知大家來做檢查(請相關人士把該分支拉下來檢查) - 相關人士在該
PR
下面進行討論 - 如果需要修改,再繼續進行修改
- 完成後,專案的維護者將該分支合併到指定的分支上
除了已經完成功能以外,當開發者遇到問題時,也可以提交一個 PR
出來,讓大家知道他遇到什麼問題。
訊息
一個 PR
需要以下四種訊息:
- source repository : 改好的功能在哪個 repository 上
- source branch : 改好的功能在哪個 branch 上
- destination repository : 要合併到哪個 repository 上
- destination branch : 要合併到哪個 branch 上
通常,如果大家都在同一個專案上工作的話,那你要告訴大家你改的東西在哪個分支上(source branch),最後要合併到哪個分支 (destination branch)。
如果你是對開源專案進行修改,通常你是 fork 一份,然後修改,才會需要填寫 repository 的部分。