GitHub 開源庫
GitHub 上好的開源庫很多,或多或少我們都對某些項目的源代碼感興趣,有時候甚至想要為這些倉庫改改 Bug,或者添加一些實用的新特性,成為倉庫代碼貢獻者中的一員。那么本節(jié),我將會為大家介紹一下向開源庫貢獻代碼的流程。
1. 了解項目
首先你要先了解這個項目,先看下 Readme 文檔里面的項目簡介,有哪些主要的 api。最好再多看看源碼,研究一下作者的代碼風格,畢竟向別人的倉庫提交代碼還是得遵循別人的代碼風格。項目中有測試的話,可以讀一下測試用例,通過測試往往可以更加清楚地知道每個函數(shù)的功能,對項目有個大致的了解。
2. 明確目的
明確你要提交代碼的目的,是自己在使用過程中發(fā)現(xiàn)了項目里面的某個 Bug 呢?還是看到 issue 里面有個 issue 自己知道怎么修復?抑或者是想添加一個有用的新特性?明確好目的,然后有針對性地解決。
3. fork 源項目
一般情況下,別人的倉庫,我們是沒有權(quán)限直接向他們的分支提交代碼的,所以要先 fork 到自己的倉庫,如下圖以著名的前端 UI 組件庫 ant design 為例,點擊圖中按鈕即可 fork,可以看到,該倉庫目前已經(jīng)有 22k 次 fork 了。
fork 之后,可以到自己的倉庫列表下面看看是否有了一份項目代碼,如圖
4. 本地開發(fā)
4.1 同步原項目代碼
先將剛才 fork 的代碼,clone 到本地,添加原項目地址,這里說下原因:大多數(shù)情況下,在自己開發(fā)過程中,原項目也在不斷的更新,所以要添加遠程項目地址,方便隨時和原項目代碼保持同步。還是以剛才我 fork 的 ant design 項目為例,執(zhí)行下面的兩個步驟,即可同步原項目代碼:
- 然后進入到項目目錄,添加原項目地址
git remote add upstream https://github.com/ant-design/ant-design.git
- 獲取最新代碼
git pull upstream master
4.2 創(chuàng)建分支
大多數(shù)情況下,我們不會直接修改 master 分支,而是根據(jù)修改的內(nèi)容新建分支,比如你是想修改 bug 則可以創(chuàng)建一個 bugfix 分支,你是想新增特性,可以創(chuàng)建一個 feature 分支,分支取名最好有意義,而且簡潔,例如可執(zhí)行如下命令:
git checkout -b bugfix
接下來我們就可以在新分支上修改代碼,修改完成后提交 commit 到代碼庫。
4.3 合并修改
上面說過了,當你修改完成的時候,原項目代碼可能已經(jīng)更新過了,所以在這里,就需要我們同步一次,不然到時候合代碼可能會產(chǎn)生沖突而不允許合入。
首先切換到 master 分支,執(zhí)行如下命令:
git checkout master
然后,同步最新的遠程代碼:
git pull upstream master
然后切回到 bugfix 分支:
git checkout bugfix
把 master 分支的最新 commit 合并到 bugfix 分支:
git rebase master
最后,就可以把現(xiàn)在的代碼 push 到遠端的 bugfix 分支了:
git push origin bugfix
4. 提交 Pull Request
可以進入到你自己的遠端項目主頁,點擊 New pull request
按鈕,然后選擇你的 bugfix 分支和原項目倉庫的 master 分支,提交申請,等待作者進行代碼 review 并合并,如果 review 不合格,作者會提示你修改,按著作者的已經(jīng)修改好后重新提交代碼即可。
5. 小結(jié)
通過本節(jié),我們學會了如果向開源庫提交代碼,多給開源庫做做貢獻,學習大佬們的代碼風格,對技術(shù)提升和職業(yè)生涯都有很多好處。很多大型互聯(lián)網(wǎng)公司都把你在 GitHub 向開源社區(qū)做的貢獻作為加分項,找工作時簡歷和面試都會加分不少。