前言
我们在学习的日常中会用到的各种开源软件,大一点的Linux,Apache,Nginx,MySQL,Redis,小一点的Muduo,Axel,那么如何去给一个开源项目做贡献呢。
这里我主要介绍如何使用github来为开源项目贡献,或者说,使用github进行多人协作。
本文主要使用@Hg_Yi @dela @dongmengyuan 的Java Web项目作为示例,借用了@Axin的帐号来示范操作,感谢小伙伴们的友情支持。
正文
首先我们想为开源贡献的流程往往是:
1.找到一个需要的开源项目。
2.使用、或者学习它。
3.在学习/使用中发现问题,或者想为它做贡献(改bug,加feature)。
但问题是不知道如何贡献,或者说这个流程应该是怎样的。
这里我们用一个非常简单的例子来描述一下大致的流程。
首先Fork之
在你需要的项目主页,点击右上角的fork
这样你能拥有一份项目的拷贝,同时看到你的项目与主分支有哪些差异。
Fork好啦
这就是你自己的代码,你想怎么就怎么改。
需要注意的是可以看到多了一行
This branch is even with xiyouLinuxJavaWeb15:master
表示我们与主分支目前没有任何的差异。
把fork后的远程仓库拉到本地
这里就是准备在本地看代码和修改啦。
(这里我们已经进行了修改,并且push到fork的远程仓库)
提交Issue
Issue就是对项目的疑问,包括bug的提交,可以说是一个与其他人(主要是项目的拥有者)交流的方式。
当然对于社区来说,更加频繁的交流可要通过邮件列表。
提交PR
准备提交PR(pull request)
提交好的PR
然后就是等待了,会有项目的开发者review你的PR,进行讨论,修改直到符合之后,便会merge进主分支,你也就为开源项目贡献了自己的代码。
与远程同步
为了及时同步远程主分支,我们先要添加一个远程分支,使用git remote add,添加成功后,我们在本地就可以用git fetch拉下来,然后查看日志,如果确认无误,就可以git merge。
当然这里也可以直接git pull自动进行merge(这里手误多加了一个分支)
参考阅读
GitHub Pull Request
Github Issue
Git fetch和git pull的区别
Git基本概念
get log 查看提交历史
Pull Request的正确打开方式(如何在GitHub上贡献开源项目)