为什么说程序员都应该玩一玩GitHub
既熟悉又陌生的GitHub
关于GitHub,相信每一个程序员都再熟悉不过了。它为开发者提供Git仓库的托管服务,是全世界最大的代码集中地,被戏称为“全球最大同性交友网站”。
但是对于很大一部分程序员来说,GitHub却是一个陌生的地方。我们中有些人可能从来没有申请过一个账号,没有创建过属于自己的Repository,甚至没有真的去访问过这个网站。更不用说要在上面看看有哪些热门的开源项目,尝试着为这些项目添砖加瓦。
既然人人都说它好,那它到底好在哪里?或许,我们应该花点时间重新审视GitHub。
开源社区的作用
讲GitHub,就不能不先谈到开源社区。
在很长一段时间,项目的源代码是公司的财产,与商业秘密有关,是封闭和不可能公开的。后来开始有人在互联网上分享自己写的代码,互相讨论,逐渐形成了一种特殊的虚拟社区。社区成员大部分都是职业的程序员或编程爱好者,他们根据相应的开源软件许可证协议公布软件源代码,分享源代码,共同自由学习交流。
GitHub的出现,极大地推进开源社区的发展。在上面,我们可以随意地下载各种著名开源项目和开源开发框架。例如android系统的源代码、前端开发的jQuery框架、Spring系列开发框架、MyBatis等等。
玩GitHub至少有以下几个好处:
- 获取最新最热门最实用的开源组件,有助于开发公司项目
- 获取最流行的技术相关源代码,有助于参考学习借鉴
- 参与感兴趣的开源项目,增强与他人协作开发的能力
- 创建属于自己的开源项目,提升编程能力,打造个人名片

很多人可能觉得阅读开源框架的源代码没有必要,认为只要会用就行了。其实这是一个非常错误的认识。如果不懂这些框架的设计思想,就不可能真的做到根据实际情况选择最合适的开源组件。如果不了解其实现的技术细节,每次出问题的时候只能是误打误撞碰运气,很难从根本上解决问题。
另外,可能有人觉得自己水平不够,不愿意自己创建新的开源项目,觉得代码写得不好还给别人看很丢脸。其实这样想大可不必。开源社区的出发点本来就是交流学习,只有那些素质低下的人才会总是冷嘲热讽找存在感。只要你坚持提交代码,不断提升自己的水平,很快就可以在简历添上你的GitHub主页地址,告诉他们你是一个有实力的人。
动动手,让我们开始玩一玩GitHub
讲了这么多GitHub的好处,还是会有很多人只是听听而已。不如我们一起来动手,跟GitHub来一次亲密接触。可能有人担心自己英文不好,看到全英文的界面有点发怵。没关系,下面的内容会一步一步图文并茂地讲到底要怎么做,非常简单,只要一步一步跟着完成就可以了。
第1步:访问GitHub,申请账号
打开浏览器,在地址栏输入https://github.com。没有被墙,不需要科学上网就可以访问,如果一时打不开就等一会或者多试几次。

加载完之后会直接显示申请账号的页面,输入你的用户名(Uername)、邮箱地址(Email)和登录密码之后,点击Sign up for GitHub按钮完成申请。账号申请成功之后,你的邮箱会收到一封验证邮件,点击验证链接就可以了。
第2步:搜索特定项目,Fork该项目
有了自己的账号之后,就可以开始我们的GitHub之旅了。为了让没有多少GitHub使用经验的朋友练手,我特地新建了一个项目。在搜索框里输入levenyes/cnblogs后按回车键确认搜索,然后点击如下图所示的链接即可。

打开名称为coders-list的文件,然后点击页面中间编辑图标,将项目fork到你的主页。

第3步:编辑特定文件,提交Pull requests
文件内容其实特别简单。使用过xml的人都能读懂,<coder>标签里面写你在博客园的用户名或是最常用的网名,<email>标签里面写邮箱地址。前者必填,后者可以选择不填。不要删除原来的内容,根据你的个人信息新增了两行即可。
<coders-list>
<coder>levenyes</coder>
<email>levenyes@icloud.com></email> <coder>liwenye</coder>
</coders-list>
在编辑完成之后点击Propose file change按钮,就可以保存修改了。

保存成功之后,你会看到如下页面。这时候,你只是把修改保存到你的那条分支。如果要合并到我的那条分支,还需要点击绿色的Create pull request按钮。

跳转到以下页面之后,直接点击绿色的Create pull request按钮。

成功之后,你就会看到以下页面。

做完以上三个步骤的动作,就已经大功告成了。只需要我再处理完你的这个pull request之后,你就可以在我的主分支上看到你修改的最新文件内容。
最后再多说两句
相信到了这个时候,你就已经不会觉得使用GitHub是一件多么难的事情。开了这个好头之后,我们就可以自主地探索更多的玩法,更好地使用GitHub,更好地参与到开源社区当中。
我有一个公众号,经常会发一些看书思考过后写的文章。如果你喜欢我的文字,可以用微信搜索“李文业的思考笔记”或者扫描二维码关注。

为什么说程序员都应该玩一玩GitHub的更多相关文章
- 关于Unicode,字符集,字符编码,每个程序员都应该知道的事
关于Unicode,字符集,字符编码,每个程序员都应该知道的事 作者:Jack47 李笑来的文章如何判断一个人是否聪明?中提到: 必要.清晰.且准确的概念,是一切思考的基石.所谓思考,很大程度上,就是 ...
- 【Mood-10】每个程序员都应该读的30本书
“如果能时光倒流,回到过去,作为一个开发人员,你可以告诉自己在职业生涯初期应该读一本,你会选择哪本书呢?我希望这个书单列表内容丰富,可以涵盖很多东西.” 很多程序员响应,他们在推荐时也写下自己的评语. ...
- 最好的程序员都是行动派(成功者不是那些明知赚钱之法还要推三阻四的人。成功者知道轻重缓急,善于把握今天) good
我相信,所有程序员都需要在下面两点之间找到一个良好的平衡: 1.把自己关在一间私密的办公室里,针对你的程序与编译器展开一次亲密对话. 2.出入公众场合,与其他人公开谈论你的程序. 关于这个话题,我已经 ...
- StackOverflow程序员推荐:每个程序员都应读的30本书
“如果能时光倒流,回到过去,作为一个开发人员,你可以告诉自己在职业生涯初期应该读一本,你会选择哪本书呢?我希望这个书单列表内容丰富,可以涵盖很多东西.” 很多程序员响应,他们在推荐时也写下自己的评语. ...
- 每个程序员都应该学习使用Python或Ruby
每个程序员都应该学习使用Python或Ruby 如果你是个学生,你应该会C,C++和Java.还会一些VB,或C#/.NET.多少你还可能开发过一些Web网页,你知道一些HTML,CSS和JavaSc ...
- Java后端程序员都做些什么?
这个问题来自于QQ网友,一句两句说不清楚,索性写个文章. 我刚开始做Web开发的时候,根本没有前端,后端之说. 原因很简单,那个时候服务器端的代码就是一切:接受浏览器的请求,实现业务逻辑,访问数据库, ...
- 程序人生 | 35岁以上的 iOS 程序员都到哪里去了?
1.网上流传华为公司正在清理 34 岁以上的员工. " 中国区开始集中清理 34 + 的交付员工,...... 去向是跟海外服务部门交换今年新毕业的校招员工,也就是进新人,出旧人. 这些旧人 ...
- 为什么二流程序员都喜欢黑php?
为什么二流程序员都喜欢黑php? 为什么程序员都喜欢黑php?这个嘛!你骂一句php是垃圾试试,保准php程序员不揍扁你!这就好像自己的母校,纵然有很多不好的地方,但是只允许自己调侃,不允许外人骂半句 ...
- 基本上每个应用程序领域的程序员都有使用 C++
C++ 的使用基本上每个应用程序领域的程序员都有使用 C++. C++ 通常用于编写设备驱动程序和其他要求实时性的直接操作硬件的软件. C++ 广泛用于教学和研究. 任何一个使用苹果电脑或 Windo ...
随机推荐
- Docker 入门实践
欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:张戈 导语 本文从新手视角记录了一个实际的Dokcer应用场景从创建.上传直到部署的详细过程,并简单的介绍了腾讯云容器服务的使用方法 ...
- javaScript数组去重方法
在JAvascript平时项目开发中经常会用到数组去重的操作.这时候就要用到JS数组去重的方法了. demo1: 第一种:JS数组去重操作方法是利用遍历原数组,利用数组的indexOf()方法来来判断 ...
- grep&正则表达式
p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; f ...
- 玩转PS路径,轻松画logo!
轻松画图标!教你一分钟玩转PS路径描边 推荐: cyRotel 2014/11/24 in PS 教程 & 设计文章 @Micu设计 :Photoshop的路径工具和钢笔工具 ...
- python--简易购物车实现
目标要求: 1.用户输入购物预算 2.打印商品清单,由用户选择,预算够则购买,不够则提示 3.输入q,退出程序 4.购物结束,显示购买的东西和余额 实现: 1.用列表存储商品及价格信息 2.建立空列表 ...
- Java课设 彩票购买抽奖程序 个人博客
一.团队课程设计博客链接 http://www.cnblogs.com/lyq063/p/7072507.html 二.自己的代码提交记录截图 三.自己负责模块或任务详细说明 用户注册信息的存储和登录 ...
- Java课程设计——计算器
1.团队课程设计博客链接 http://www.cnblogs.com/yuanj/p/7072137.html 2.个人负责模块或任务说明 确定课题并进行任务分工 编写计算器删除,清零,清空,小数点 ...
- JVM菜鸟进阶高手之路十一(eden survivor分配问题)
转载请注明原创出处,谢谢! 问题 这个Xmn设置为1G,,我用jmap -heap 看,这个Eden From To怎么不是一个整8:1:1的关系呢? 我看内存分配还是没变,我Xmn1g,感觉From ...
- ngRepeat track by
刚刚看见一篇文章讲述track by的功能的,大致记录如下: 1. ng-repeat="friend in friends" 一般不使用track by的情况下,每次刷新DOM, ...
- 西邮linux兴趣小组2014纳新免试题(五)
[第五关] 题目 http://final5.sinaapp.com/ 关注西邮Linux微信平台,得到一个名为a的文件 分析 分析文件a 需要反汇编,拿IDA上,打开后发现key_function及 ...