写在前面的一些话
说起开源项目,如同人人都懂:不过便是一群人一起写了些东西,而且这些东西是公开的,咱们都能看。但要细说,或许大多数的开发者都说不出个所以然,乃至不知道怎样提issue。
所以我就想写这样一篇文章,来聊聊我是怎么参与开源项意图,参与开源项意图正确流程是怎样的,以及咱们参与开源项意图意义。
本篇文章适宜怎样的读者:
- 有必定GitHub和Git根底,会commit pull push、会处理兼并抵触、知道库房和分支的概念;
- 有自我提高的志愿。
第零步:为何参与开源项目
本来是只写了从第一步到第五步的,纲要我都拟好了,分别是*****。后来想了想,已然都写了,为何不写全一些呢?于是便有了这第零步。
作为一名程序员,我想大多数朋友应该都和我相同,在编程方面首要仍是靠自学,比方看书、看视频或看博文。
但当咱们学习到必定程度的时分,总该把自己所学的东西融会贯通一下。这时分咱们就会去试着写一些代码,做一做项目。
而聪明的开发人员会意识到那些有长期堆集经历的开源项目傍边蕴含着大量的常识,能够从优异开源项意图代码傍边学习到相当多的东西。
假如恰好有爱好且恰好有时刻,参与开源项目将会是提高自我的好机会,你的代码将会经过一双双眼睛的检查,你将得到其他程序员的主张,这在无形之中便能提高你的代码质量和规范。
尤其是作为学生,在校能接触到的项目一般都是比较简单的,类似图书办理体系、学生选课体系之类的(或许自己觉得不简单),但在开源社区,你能够接触到各种方向的开源项目,乃至企业级的大型项目。
总归,能够确信的是,参与到一个适宜的开源项目中,必定是对你有较大帮助的。
欢迎咱们参与我的开源项目校园博客 github.com/stick-i/scb…,这是一个依据SpringCloud + Vue2的微服务项目,后端首要由我担任,本来的前端开发者忙着考公去了(公然人生的止境仍是编制),所以现在非常等候各位朋友的加入。
第一步:提出问题
咱们在写代码之前,总得想想自己要写些什么东西,总不能上去便是一句 “Hello world” 吧!那咱们要参与一个开源项目,是不是也得想想自己该为这个项目奉献一些什么功用?
这时分,咱们需求先了解这个项目。就拿我的校园博客来说,咱们能够先去项目官网进行运用体验,找到一些bug或许还没有完善当地,再或许找到一些能够新添加的功用,那么这些便是咱们要提出的问题了。
- 于是乎,咱们去给项目提一个issue,并依据社区的发问要求,将自己的主意用issue来告诉项目担任人。
- 写好标题和内容后,点击右下角
Submit new issue
,你就能看到自己创立的一个issue了,那么恭喜你,现已为这个社区奉献出了自己的一份力气,虽然这只是一个issue!
-
提出问题,其实也能够是寻觅问题。 有些时分,咱们或许无法轻易的找到项意图bug,也没有什么好的主张,这时分,咱们也能够直接去查看社区里现已存在的issue。
下面这些其实都是别人现已提出的问题,能够在里面找一个咱们想做的而且还没有被分配的,一般主张新人奉献者找那种带有
good first issue
标签的问题,这类问题更适宜提供给新同学作为加入开源项意图第一个奉献,由于它们相对较简单。 -
那不管怎样样,咱们现在至少创立或许找到了一个适宜的issue。现在,咱们去这条issue的谈论区发送一句话,表明自己想认领并处理这个问题,就像这样:
-
接下来,咱们只需求等候社区的办理员回复你。假如他同意了你的issue而且觉得你能够处理这个问题,他会回复你的谈论,而且将这个问题分配给你,就像这样:
第二步:Fork库房
是时分开端进行项意图开发了!但是咱们应该把代码写在哪里呢?
直接把代码下载下来,然后在本地开端写代码,写完代码再经过社交软件发送给项意图办理人员吗?当然不是,这一点都不Git。
咱们应该先将原库房Fork到自己的库房里(在项目首页的右上角),相当于把这个库房深复制
一份到咱们自己的库房里。由于这样咱们才有修正的权限,写完代码今后才能将代码提交到GitHub上:
点击 Create fork
即可
Fork成功之后,在咱们自己的库房里就会有一份与原库房相同的库房,而且这个库房是咱们自己的,这意味着咱们能够在这个库房里进行任意的代码更改,But原库房咱们仍然是没有权限的。
所以咱们将来编写代码的时分,便是在这个库房上进行操作的。
现在咱们将代码拉取到本地,我比较喜爱运用idea进行git操作,这个url记得用自己库房的url:
确保分支库房和主库房同步
库房Fork今后,会出现一个新的问题:原库房会有人更新代码,但咱们的库房不会被主动更新,就会导致两个库房的进展不共同,将来提交PR的时分就或许会造成兼并抵触。所以咱们每次写代码和提交代码之前,最好都要先去同步一下咱们的库房。
(1)在GitHub上进行同步
点击分支库房的Sync fork按钮,能够对分支进行更新操作:
(2)在idea上进行同步
有时分咱们运用方法一处理抵触或许会比较费事,由于在网页上操作没有那么便利,所以我更主张咱们运用这个方法二。
-
首先在本地git库房中添加多个长途库房,右键点击长途,然后会弹出一个办理长途,点进去就能够装备长途库房了
这是我装备好的长途库房,第一个main是源项意图库房,第二个mine是我自己的(我用来演示的账号名就叫scblogs),我给他们分别取了对应含义的称号:
然后咱们点左面的fetch刷新一下,就能够看到有两个长途了:
-
当咱们要准备写代码和提交代码之前,先fetch一下长途库房,看看网络图,主库房里有没有更新些什么东西
咱们发现长途的主库房的main分支现已超越了当时我的分支(那个黄色的符号便是本地的当时分支),两个库房不共同的时分(看不清能够扩大),那咱们就要及时的去拉取主库房main分支的代码,将自己的库房进行更新。
-
拉取代码的时分挑选主库房的main分支,然后点拉取,就会更新兼并到本地分支代码了:
更新之后,咱们当时分支现已处于最新的版本了:
第三步:编写代码
没什么好说的,写代码就好了。
-
在咱们写代码之前,最好先看看项意图奉献者阐明,或许咱们在参与某项目之前就应该先看这个。 一般是主目录下的一个叫做 CONTRIBUTING.md 的文件,里面会写一些留意事项,包括代码规范和编写代码的一些操作、流程、步骤等,仔细阅读这份文档,能够保证咱们的更好的参与项意图奉献。
-
写的过程中假如遇到了疑问,及时向社区发问,以免自己白费一通力气。 一个有活力的社区,必定会有人及时回复你的。不过也要留意发问的内容,有些东西能在搜索引擎上取得答案的,就不要去打扰别人了。
-
对了,在你提交代码的时分,最好把每次提交的内容都尽或许的进行细分。 比方,我现在正实现用户排行榜的功用,而用户排行榜又分为了用户活跃排行榜和用户等级排行榜,那么我应该将它们分红两次提交,且每次提交都只添加跟当时提交描绘相关的代码。又或许,我在实现排行榜功用的过程中,发现了一个之前留传的bug,那么我应该将处理这个bug的代码进行独自的一次提交。
这样将提交细分的优点便是,将来办理员要对你的代码进行检查的时分,他将会更清楚的知道你每行代码的意图,也会更便利于前史提交信息的查询。
-
然后便是写代码,写完了,commit 提交,然后 push 到自己的库房上去,假如这时分发现主库房的main分支有更新的代码,最好也手动同步一下,并将抵触处理。
-
温馨提示:在提交代码之前,最好先自己对自己的代码进行一次检查,在idea的提交界面,能够很便利的对自己修正过的代码进行检查。检查的过程中留意判别,只提交那些有意义的代码,有些调试过程中留下的代码,是不该该被提交的:
此刻我已提交并推送结束:
第四步:创立PR
到这一步,咱们现已准备好将自己写的代码提交到主库房了,但由于咱们没有主库房的操作权限,所所以无法直接提交到主库房的。
这时,咱们需求创立一个 Pull Request
(俗称PR),意思是恳求主库房的所有者从你的库房中拉取代码兼并到主库房中。
怎么写描绘信息
还记得咱们之前创立或许认领的那个issue吗,假如咱们此刻要提交的代码现已处理了这个issue所触及的问题,那咱们就能够在PR傍边把这个issue封闭了,只需求在咱们等会要填写的描绘信息里加上 “close #78” 就能够了,78指的是那个issue的编号,能够在它的页面上看到:
当然,PR的描绘信息里不能只要个 close,否则会让项目担任人很抓狂,由于他无法确认你写的代码是否能够到达预期的效果,乃至他或许还得去自己进行一次测验。
所以正常的描绘信息,应该包含这个PR处理了什么问题、怎么处理的、以及新增代码的测验效果截图。测验截图很重要,咱们截图之后是能够直接粘贴到github的描绘信息里的,非常便利,但这几张图片却能够让担任人对你的代码更放心。
关于怎么主张PR,咱们能够在GitHub的页面上进行操作,也能够在idea上进行操作,我个人更喜爱在idea上操作。下面我将分别介绍这两种方法。
(1)在GitHub上主张PR
- 进入到咱们的库房主页,能够看到上面提示说咱们的分支领先于主库房的main分支:
- 点击Contribute,然后点击Open pull request:
- 此刻体系会主动帮咱们跳转到创立PR的页面,填写完提交信息,指定从哪里兼并到哪里(一般是挑选从咱们自己库房的main分支兼并到主库房的dev分支),点击
Create pull request
即可:
(2)在idea上主张PR
PS:这是由GitHub插件提供的功用,只支撑GitHub的PR办理。
-
找到并打开 视图 -> 工具窗口 -> 拉取恳求:
-
这里挑选主库房,由于咱们是要对主库房主张PR,然后点击查看拉取恳求:
-
点击设置旁边的加号,敞开一个新的PR:
-
指定从自己库房的main分支兼并到主库房的dev分支,填写标题和描绘,点击创立拉取恳求即可:
第五步:代码检查
当项目办理员收到你提交的PR后,他会对你提交的代码进行检查。 说白了便是查看你写的代码,并考虑其中写的好的和写的欠好的当地,然后给你提出定见和主张。
作为奉献者,咱们需求依据办理员的定见进行代码的修正,或许~~(跟他掰扯掰扯)~~跟办理员解说咱们为什么要这样写,这样写的意图是什么,总归,你们两洽谈并达到共同就能够了。
那当咱们修正完代码后,再提交到自己的库房中 之前用来创立PR的那个分支,之前创立的PR就会被主动更新了,不需求咱们再敞开一个PR(除非之前的PR被封闭了)。
那假如咱们的代码经过了检查,它就会被兼并到主库房中,这时分咱们的一次代码奉献就算是完结啦!你会被列在项意图奉献者列表中,就像这样:
写在文末的一些话
看完这套流程,或许很多朋友会想,参与开源项目咋这么费事,那我仍是不参与了。
我写这篇文章的时分也觉得费事,咋这么难写,写了我好几天,或许是由于我太菜写的太详细了哈哈哈哈哈哈哈。
但平时我参与项目奉献的时分,其实并没有觉得有什么费事的当地,也便是点几下点几下,很快就搞定了,时刻首要都花费在了发问、交流和写代码上,并没有在这些“杂七杂八”的流程上糟蹋什么时刻。而且这套流程中有几步其实是只要做一次的,真正需求每次都操作的,其实只要写代码、创立PR和同步库房。
怎样说呢,自己测验一下,把这套流程操作一遍,或许去参与一个开源项目(欢迎来校园博客),自己从头到尾操作一遍之后,就没什么问题了,今后再想去参与各种开源项目,至少流程都懂了。
对了,假如你看了这篇文章之后还想了解得更多,能够再看看这位作者的文章,我觉得写得挺好的,分享给咱们:mp.weixin.qq.com/s/mY-1mDFvB…
假如这篇的文章对你有帮助,那就赶快去找个适宜的开源项目试一试吧!从实践中去操练这些步骤,会让你对它的理解愈加深刻噢!