GitHub 开源库

GitHub 上好的开源库很多,或多或少我们都对某些项目的源代码感兴趣,有时候甚至想要为这些仓库改改 Bug,或者添加一些实用的新特性,成为仓库代码贡献者中的一员。那么本节,我将会为大家介绍一下向开源库贡献代码的流程。

1. 了解项目

首先你要先了解这个项目,先看下 Readme 文档里面的项目简介,有哪些主要的 api。最好再多看看源码,研究一下作者的代码风格,毕竟向别人的仓库提交代码还是得遵循别人的代码风格。项目中有测试的话,可以读一下测试用例,通过测试往往可以更加清楚地知道每个函数的功能,对项目有个大致的了解。

2. 明确目的

明确你要提交代码的目的,是自己在使用过程中发现了项目里面的某个 Bug 呢?还是看到 issue 里面有个 issue 自己知道怎么修复?抑或者是想添加一个有用的新特性?明确好目的,然后有针对性地解决。

3. fork 源项目

一般情况下,别人的仓库,我们是没有权限直接向他们的分支提交代码的,所以要先 fork 到自己的仓库,如下图以著名的前端 UI 组件库 ant design 为例,点击图中按钮即可 fork,可以看到,该仓库目前已经有 22k 次 fork 了。
图片描述
fork 之后,可以到自己的仓库列表下面看看是否有了一份项目代码,如图
图片描述

4. 本地开发

4.1 同步原项目代码

先将刚才 fork 的代码,clone 到本地,添加原项目地址,这里说下原因:大多数情况下,在自己开发过程中,原项目也在不断的更新,所以要添加远程项目地址,方便随时和原项目代码保持同步。还是以刚才我 fork 的 ant design 项目为例,执行下面的两个步骤,即可同步原项目代码:

  • 然后进入到项目目录,添加原项目地址

git remote add upstream https://github.com/ant-design/ant-design.git

  • 获取最新代码

git pull upstream master

4.2 创建分支

大多数情况下,我们不会直接修改 master 分支,而是根据修改的内容新建分支,比如你是想修改 bug 则可以创建一个 bugfix 分支,你是想新增特性,可以创建一个 feature 分支,分支取名最好有意义,而且简洁,例如可执行如下命令:
git checkout -b bugfix
接下来我们就可以在新分支上修改代码,修改完成后提交 commit 到代码库。

4.3 合并修改

上面说过了,当你修改完成的时候,原项目代码可能已经更新过了,所以在这里,就需要我们同步一次,不然到时候合代码可能会产生冲突而不允许合入。
首先切换到 master 分支,执行如下命令:
git checkout master
然后,同步最新的远程代码:
git pull upstream master
然后切回到 bugfix 分支:
git checkout bugfix
把 master 分支的最新 commit 合并到 bugfix 分支:
git rebase master
最后,就可以把现在的代码 push 到远端的 bugfix 分支了:
git push origin bugfix

4. 提交 Pull Request

可以进入到你自己的远端项目主页,点击 New pull request 按钮,然后选择你的 bugfix 分支和原项目仓库的 master 分支,提交申请,等待作者进行代码 review 并合并,如果 review 不合格,作者会提示你修改,按着作者的已经修改好后重新提交代码即可。

5. 小结

通过本节,我们学会了如果向开源库提交代码,多给开源库做做贡献,学习大佬们的代码风格,对技术提升和职业生涯都有很多好处。很多大型互联网公司都把你在 GitHub 向开源社区做的贡献作为加分项,找工作时简历和面试都会加分不少。