前言
與以前的集中式(SVN)不同,開發者之間的協作方式因為 Git 的分散式特性而變得更為靈活多樣。其中,我認為 Github flow 很適合初學者,它實用又不繁複,對普通的小團隊非常夠用。希望大家先熟悉 git branch 的操作再繼續看下去。
Github flow
整個工作流程如下:
- 將遠端repo clone到自己的本地端,並創造一條新分支,在新分支上開發。
- 當新功能開發完成後,不要將新分支合併到master,直接向遠端repo發出 pull request,請求遠端接受合併。
- 遠端repo的管理人和貢獻者經過code review和一來一往的討論。
- 由遠端repo的管理人合併新分支至master。
如何在Github開源社群做貢獻?
以下解說,當我們在 Github 閒逛,看到有興趣的 repo 時,要如何貢獻一己之力。
首先,我們按右上角的 fork,將別人的 Github 專案,完全複製一份到自己的 Github。
之後我們可以看到同名的專案出現在自己的 Github,此後我們所有的變更都是push到這個 repo。
Pull專案至本地端,並開始開發新功能。方式是產生一條屬於自己的新branch,以這一條branch做新功能的開發,千萬不要改動專案上的master分支,log flow 如下圖。
接下來,push專案到自己的Github遠端儲存庫。
向原來的專案作者發出 pull request(圖上兩個皆可點選),請求他合併自己增加的新功能。注意,發出pull request後是無法取消的,所以要測試充足後再發出。
留言給原專案作者,說明一下變更的詳細內容。
往下拉可以看到自己所變更的內容(if you press “compare & pull request”),做最後的檢查。
我們可以看到,剛剛的發出的pull request已經在上面。接下來只要等原專案作者回覆了。
遠端專案管理者
遠端repo的管理者需要隨時注意的地方為 issues 區域和 pull request 區域。issues區域需要管理者到”設定”去開放給外來者,如下圖。
之後不論任何能都能在issues這裡回報問題,並使用簡單的open/close追蹤,issue還能被多個tag標記,讓搜尋issue更方便。搜尋技巧可以見這篇。
專案管理者和貢獻者可以在pull request區域的對話過程中,用#引用issue和commit。有這個功能,讓討論變得非常方便!跨專案的issues引用也是ok的,只是要自行google了!
結語
Gitflow簡單又好用,但如果要公司形式的多人合作,可以參考傳說中的Git flow,網路上有很多資料可以參考。