既熟悉又陌生的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. JQuery的动态加载class无法实现点击时间的解决方案

    //对于 加载过来class 的del_a 实现点击事情 $(document).on('click',".del_a",function(){ $(".mark_id& ...

  2. Python终端输出打印彩色字体的方法

    一  实现过程 终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关. 转义序列是以ESC开头,即用\033来完成(ESC的ASCII码用十进制表示是27,用八进制表示就是0 ...

  3. Java线程:线程栈模型

    要理解线程调度的原理,以及线程执行过程,必须理解线程栈模型. 线程栈是指某时刻时内存中线程调度的栈信息,当前调用的方法总是位于栈顶.线程栈的内容是随着程序的运行动态变化的,因此研究线程栈必须选择一个运 ...

  4. NHibernate教程(8)--巧用组件

    本节内容 引入 方案1:直接添加 方案2:巧用组件 实例分析 结语 引入 通过前面7篇的学习,有点乏味了~~~这篇来学习一个技巧,大家一起想想如果我要在Customer类中实现一个Fullname属性 ...

  5. NHibernate学习教程(6)--事务Transactions

    本节内容 事务概述 1.新建对象 [测试成功提交] [测试失败回滚] 2.删除对象 3.更新对象 4.保存更新对象 结语 上一篇我们介绍了NHibernate中的Insert, Update,  De ...

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

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/36034955   您好,我正在参加CSDN博文大赛,如果您喜欢我的文章,希望您能帮我投一票 ...

  7. Java单元测试之JUnit篇

    单元测试是编写测试代码,应该准确.快速地保证程序基本模块的正确性. 好的单元测试的标准 JUnit是Java单元测试框架,已经在Eclipse中默认安装. JUnit4 JUnit4通过注解的方式来识 ...

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

    1. 本周学习总结 2.书面作业 Q1.List中指定元素的删除(题目4-1) public static List<String> convertStringToList(String ...

  9. 201521123010 《Java程序设计》第3周学习总结

    1. 本周学习总结 2. 书面作业 1.代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; p ...

  10. 201521123075 《Java程序设计》第11周学习总结

    1. 本周学习总结 2. 书面作业 本次PTA作业题集多线程 1.互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) 1.1 除了使用synchronized修饰方法实现互斥同步访问, ...