既熟悉又陌生的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. input[type="button"]与<button>的区别

    <button>标签  浏览器支持  所有主流浏览器都支持<button>标签.  重要事项:如果在HTML表单中使用button元素,不同的浏览器会提交不同的值.IE将提交& ...

  2. Hashtable、synchronizedMap、ConcurrentHashMap 比较

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp18 Hashtable.synchronizedMap.Concurren ...

  3. 对于c语言存储分配程序(malloc函数)实现的理解

    内容主要出自<The C Programming Language>一书,不得不说这是一本程序员必读的书,我大二读了前面几章就扔到一边了,直到最近才又拿起来再读,找不到言语来形容我现在后悔 ...

  4. Vuex 最简单的数量增减实例

    Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化.Vuex 也集成到 Vue 的官方调试工具 ...

  5. Java学习记录 : 画板的实现

    接触java不满一个月,看厚厚的java入门简直要醉,故利用实例来巩固所学知识. 画板的实现其实从原理来说超级简单,可能一会儿就完成了. 但作为一名强迫症患者,要实现和win下面的画板一样的功能还是需 ...

  6. 软件工程(GZSD2015)学生博客列表

    2015年贵州师范大学软件工程课程学生博客列表 陈小丽 郑倩 唐洁 周娟 李利思 肖俊 罗文豪 周静 徐明艳 毛涛 邓洪虹 岳庆 李盼 安坤 何亚 涂江凤 张义平 杨明颢 杨家堂 胡贵玲 寿克霞 吴明 ...

  7. 【Beta阶段】第二次scrum meeting

    Coding/OSChina 地址 1. 会议内容 学号 主要负责的方向 昨日任务 昨日任务完成进度 接下去要做 99 PM 会议总结,博客编写,代码整理 100% 准备下一次会议内容,并对已完成的代 ...

  8. 201521123005《java程序设计》第三周学习总结

    1. 本周学习总结 初学面向对象,会学习到很多碎片化的概念与知识.使用思维导图将这些碎片化的概念.知识组织起来.使用工具画出本周学习到的知识点. 参考资料: 百度脑图 XMind 2. 书面作业 ·Q ...

  9. 201521123006 《java程序设计》 第14周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 2. 书面作业 1. MySQL数据库基本操作 建立数据库,将自己的姓名.学号作为一条记录插入.(截图,需出现自 ...

  10. 201521123069 《Java程序设计》 第12周学习总结

    1.本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2.书面作业 Q1.将Student对象(属性:int id, String name,int age,doub ...