既熟悉又陌生的GitHub

关于GitHub,相信每一个程序员都再熟悉不过了。它为开发者提供Git仓库的托管服务,是全世界最大的代码集中地,被戏称为“全球最大同性交友网站”。

但是对于很大一部分程序员来说,GitHub却是一个陌生的地方。我们中有些人可能从来没有申请过一个账号,没有创建过属于自己的Repository,甚至没有真的去访问过这个网站。更不用说要在上面看看有哪些热门的开源项目,尝试着为这些项目添砖加瓦。

既然人人都说它好,那它到底好在哪里?或许,我们应该花点时间重新审视GitHub。

开源社区的作用

讲GitHub,就不能不先谈到开源社区。

在很长一段时间,项目的源代码是公司的财产,与商业秘密有关,是封闭和不可能公开的。后来开始有人在互联网上分享自己写的代码,互相讨论,逐渐形成了一种特殊的虚拟社区。社区成员大部分都是职业的程序员或编程爱好者,他们根据相应的开源软件许可证协议公布软件源代码,分享源代码,共同自由学习交流。

GitHub的出现,极大地推进开源社区的发展。在上面,我们可以随意地下载各种著名开源项目和开源开发框架。例如android系统的源代码、前端开发的jQuery框架、Spring系列开发框架、MyBatis等等。

玩GitHub至少有以下几个好处:

  1. 获取最新最热门最实用的开源组件,有助于开发公司项目
  2. 获取最流行的技术相关源代码,有助于参考学习借鉴
  3. 参与感兴趣的开源项目,增强与他人协作开发的能力
  4. 创建属于自己的开源项目,提升编程能力,打造个人名片

很多人可能觉得阅读开源框架的源代码没有必要,认为只要会用就行了。其实这是一个非常错误的认识。如果不懂这些框架的设计思想,就不可能真的做到根据实际情况选择最合适的开源组件。如果不了解其实现的技术细节,每次出问题的时候只能是误打误撞碰运气,很难从根本上解决问题。

另外,可能有人觉得自己水平不够,不愿意自己创建新的开源项目,觉得代码写得不好还给别人看很丢脸。其实这样想大可不必。开源社区的出发点本来就是交流学习,只有那些素质低下的人才会总是冷嘲热讽找存在感。只要你坚持提交代码,不断提升自己的水平,很快就可以在简历添上你的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的更多相关文章

  1. 关于Unicode,字符集,字符编码,每个程序员都应该知道的事

    关于Unicode,字符集,字符编码,每个程序员都应该知道的事 作者:Jack47 李笑来的文章如何判断一个人是否聪明?中提到: 必要.清晰.且准确的概念,是一切思考的基石.所谓思考,很大程度上,就是 ...

  2. 【Mood-10】每个程序员都应该读的30本书

    “如果能时光倒流,回到过去,作为一个开发人员,你可以告诉自己在职业生涯初期应该读一本,你会选择哪本书呢?我希望这个书单列表内容丰富,可以涵盖很多东西.” 很多程序员响应,他们在推荐时也写下自己的评语. ...

  3. 最好的程序员都是行动派(成功者不是那些明知赚钱之法还要推三阻四的人。成功者知道轻重缓急,善于把握今天) good

    我相信,所有程序员都需要在下面两点之间找到一个良好的平衡: 1.把自己关在一间私密的办公室里,针对你的程序与编译器展开一次亲密对话. 2.出入公众场合,与其他人公开谈论你的程序. 关于这个话题,我已经 ...

  4. StackOverflow程序员推荐:每个程序员都应读的30本书

    “如果能时光倒流,回到过去,作为一个开发人员,你可以告诉自己在职业生涯初期应该读一本,你会选择哪本书呢?我希望这个书单列表内容丰富,可以涵盖很多东西.” 很多程序员响应,他们在推荐时也写下自己的评语. ...

  5. 每个程序员都应该学习使用Python或Ruby

    每个程序员都应该学习使用Python或Ruby 如果你是个学生,你应该会C,C++和Java.还会一些VB,或C#/.NET.多少你还可能开发过一些Web网页,你知道一些HTML,CSS和JavaSc ...

  6. Java后端程序员都做些什么?

    这个问题来自于QQ网友,一句两句说不清楚,索性写个文章. 我刚开始做Web开发的时候,根本没有前端,后端之说. 原因很简单,那个时候服务器端的代码就是一切:接受浏览器的请求,实现业务逻辑,访问数据库, ...

  7. 程序人生 | 35岁以上的 iOS 程序员都到哪里去了?

    1.网上流传华为公司正在清理 34 岁以上的员工. " 中国区开始集中清理 34 + 的交付员工,...... 去向是跟海外服务部门交换今年新毕业的校招员工,也就是进新人,出旧人. 这些旧人 ...

  8. 为什么二流程序员都喜欢黑php?

    为什么二流程序员都喜欢黑php? 为什么程序员都喜欢黑php?这个嘛!你骂一句php是垃圾试试,保准php程序员不揍扁你!这就好像自己的母校,纵然有很多不好的地方,但是只允许自己调侃,不允许外人骂半句 ...

  9. 基本上每个应用程序领域的程序员都有使用 C++

    C++ 的使用基本上每个应用程序领域的程序员都有使用 C++. C++ 通常用于编写设备驱动程序和其他要求实时性的直接操作硬件的软件. C++ 广泛用于教学和研究. 任何一个使用苹果电脑或 Windo ...

随机推荐

  1. JavaScript--我发现,原来你是这样的JS(基础概念--躯壳,不妨从中文角度看js)

    介绍 这是红宝书(JavaScript高级程序设计 3版)的读书笔记第二篇(基础概念--躯壳篇),有着部分第三章的知识内容,当然其中还有我个人的理解.红宝书这本书可以说是难啃的,要看完不容易,挺厚的, ...

  2. [Unity 设计模式]桥接模式(BridgePattern)

    1.前言 继上一讲IOC模式的基础上继续本讲桥接模式,笔者感觉桥接模式是23种设计模式中桥接模式是最好用但也是最难理解的设计模式之一,23中设计模式就好武侠剧中一本武功秘籍,我们在工作过程中想要熟练运 ...

  3. Java的构造器

    初始化和清理是涉及安全的两个问题.C++和Java都引入了构造器(constructor)的概念,这是一个在创建对象时被自动调用的特殊方法. 可以假想为编写的每个类都定义一个initialize()方 ...

  4. 玩转PS路径,轻松画logo!

    轻松画图标!教你一分钟玩转PS路径描边 推荐: cyRotel    2014/11/24    in PS 教程 & 设计文章    @Micu设计 :Photoshop的路径工具和钢笔工具 ...

  5. CCNA+NP学习笔记—交换网络篇

    本章关于企业网络的最底层--交换层,难度较低,主要为以后三层的路由做铺垫.所有笔记的分类顺序为:序章→交换层→路由层→运营商,体现了从企业网到互联网的学习顺序. 注:思科设备命令行通常不分大小写!以后 ...

  6. 转:【Java集合源码剖析】Java集合框架

    转载轻注明出处:http://blog.csdn.net/ns_code/article/details/35564663   Java集合工具包位于Java.util包下,包含了很多常用的数据结构, ...

  7. 如何设置Cookie 的值为中文的内容

    默认情况下,cookie的值是不允许中文内容的.可以借助于java.net.URLEncoder先对中文字符串进行编码,将编码后的结果设为cookie值.当程序要读取cookie值时,先读取,然后使用 ...

  8. 201521123109《java程序设计》第六周学习总结

    1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖 ...

  9. 201521123033《Java程序设计》第13周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jmu ...

  10. Java课程设计——计算数学表达式的程序(201521123051 谢庆圆)

    计算数学表达式的程序(201521123051 谢庆圆) 1.团队课程设计博客链接 团队课程设计博客链接 2.个人负责模块或任务说明 1.计算数字表达式中操作按钮的实现(右容器) 2.. 注册监听器以 ...