什么是Github?
初识Github
GitHub 是程序员的必备技能
1.什么是Github?
确切的说 GitHub 是一家公司,位于旧金山,由 Chris Wanstrath, PJ Hyett 与
Tom Preston-Werner 三位开发者在2008年4月创办。这是它的 Logo:
2008年4月10日,GitHub正式成立,地址:How people build software · GitHub ,
主要提供基于git的版本托管服务。一经上线,它的发展速度惊为天人,截止目前,GitHub 已经发展成全球最大的开(同)源(性)社区。
2.Github和Git的关系?
首先需要知道的一点是:
Git 是一款免费、开源的分布式版本控制系统,他是著名的 Linux 发明者 Linus Torvalds 开发的。说到版本控制系统,估计很多人都用过 SVN ,只不过 Git 是新时代的产物,如果你还在用 SVN 来管理你的代码,那就真的有些落伍了。不管是学习 GitHub ,还是以后想从事编程行业,Git 都可以算是必备技能了,所以从现在开始建议你先去学习熟悉下 Git 。
而 GitHub 上面说了,主要提供基于 git 的版本托管服务。也就是说现在 GitHub 上托管的所有项目代码都是基于 Git 来进行版本控制的,所以 Git 只是 GitHub 上用来管理项目的一个工具而已,GitHub 的功能可远不止于此!
3.GitHub 的影响力
上面我说了 GitHub 现在毫无疑问基本是全球最大的开源社区了,这样说你们可能认为未免有点浮夸,且听我一一举证:
全球顶级科技公司纷纷加入 GitHub ,并贡献他们自己的项目代码
- Google: https://github.com/google
- 苹果: https://github.com/apple
- Facebook: https://github.com/facebook
- Twitter:https://github.com/twitter
- 微软:https://github.com/microsoft
- Square:https://github.com/square
- 阿里:https://github.com/alibaba
- …
全球顶级开源项目都优先选择在 GitHub 上开源
- Linux:https://github.com/torvalds/linux
- Rails:https://github.com/rails/rails
- Nodejs:https://github.com/nodejs/node
- Swift:https://github.com/apple/swift
- CoffeeScript:https://github.com/jashkenas/coffeescript
- Ruby:https://github.com/ruby/ruby
- …
全球顶级编程大牛加入GitHub
- Linux 发明者 Linus Torvalds:https://github.com/torvalds
- Rails 创始人 DHH:https://github.com/dhh
- 被称为「Android之神」的 JakeWharton:https://github.com/JakeWharton , 你们用的很多开源库如 ButterKnife、OkHttp、 Retrofit、 Picasso、ViewPagerIndicator 等都是出自他之手!
4.GitHub 有什么用
- 学习优秀的开源项目
开源社区一直有一句流行的话叫「不要重复发明轮子」,某种意义上正是因为开源社区的贡献,我们的软件开发才能变得越来越容易,越来越快速。试 想你在做项目时,如果每一模块都要自己去写,如网络库、图片加载库、ORM库等等,自己写的好不好是一回事,时间与资源是很大的成本。对于大公 司可能会有人力与资源去发明一套自己的轮子,但是对于大部分互联网创业公司来说时间就是一切。而且你在使用开源项目的过程也可以学习他们优秀 的设计思想、实现方式,这是最好的学习资料,也是一份提升自己能力的绝佳方式!
- 多人协作
如果你想发起一个项目,比如翻译一份不错的英文文档,觉得一个人的精力不够,所以你需要更多的人参与进来,这时候 GitHub 是你的最佳选择,感兴 趣的人可以参与进来,利用业余时间对这个项目做贡献,然后可以互相审核、合并,简直不要太棒!
- 搭建博客、个人网站或者公司官网
这个就不用多说了,现在越来越多的博客都是基于 GitHub Pages 来搭建的了,你可以随心所欲的定制自己的样式,可以给你博客买个逼格高的域名,再 也不用忍受各大博客网站的约束与各式各样的广告了!
- 写作
如果你喜欢写作,而且基于 Markdown, 并准备出版书籍,那么推荐你用 Gitbook ,技术写作人的最爱!
- 个人简历
如果你有一个活跃的 GitHub 账号,上面有自己不错的开源项目,还经常给别的开源项目提问题,push 代码,那么你找工作将是一个非常大的优势,现在 程序员的招聘很多公司都很看中你 GitHub 账号,某种意义上 GitHub 就可以算是你的简历了。而且不仅国内,很多国外的科技公司都会通过 GitHub 来寻 找优秀的人才,比如我甚至通过 GitHub 收到过 Facebook 的邀请邮件!
- 其他
当然 GitHub 能做的还远不止这些,我见过很多在 GitHub 搞的一些有意思的项目,有找男朋友的,甚至还有利用 GitHub 的 commit 丧心病狂的秀恩爱 的,没错,那个丧心病狂的人就是我,如果你前段日子关注了我的 GitHub ,那么能看到这么一个壮观的景象:
加入Github
1.注册 GitHub
先去 GitHub 官网「How people build software · GitHub」注册「Sign Up」个账号,注册页面如下:
这个应该没啥说的,需要填用户名、邮箱、密码,值得一提的用户名请不要那么随便,最好取的这个名字就是你以后常用的用户名了,也强烈建议你各大社交账号都用一样的用户名,这样识别度较高,比如我的博客域名、GitHub、知乎等其他社交账号 ID 都是 stormzhang ,微博是因为被占用了,无奈换了个id,而且这个用户名以后在 GitHub 搭建博客的时候默认给你生成的博客地址就是 http://username.github.io ,所以给自己取个好点的用户名吧。
填好用户名、邮箱、密码紧接着到这一步:
导航栏,从左到右依次是 GitHub 主页按钮、搜索框、PR、Issues、Gist(这些概念后面会讲的)、消息提醒、创建项目按钮、我的账号相关。
讨论区,这部分你可以理解成微博,就是你关注的一些人的活动会出现在这里,比如如果你们关注我了,那么以后我 star、fork 了某些项目就会出现在你的时间线里。 ^_^ 因为是新创建的Github,所以空旷了些
我的项目,这部分就不用说了,如果你创建了项目,就里就可以快捷访问。
3.设置你的Github
如果你也是新注册的 GitHub 账号,是不是觉得很简陋?虽然我们还没有多少自己的项目,但是第一步起码要先完善自己的信息,点击如下的 Settings 菜单:
到设置页面来设置一些基本信息:
4. GitHub 基本概念
上面认识了 GitHub 的基本面貌之后,你需要了解一些 GitHub 的基本概念,这些概念是你经常会接触并遇到的。
- Repository
仓库的意思,即你的项目,你想在 GitHub 上开源一个项目,那就必须要新建一个 Repository ,如果你开源的项目多了,你就拥有了多个 Repositories 。
- Issue
问题的意思,举个例子,就是你开源了一个项目,别人发现你的项目中有bug,或者哪些地方做的不够好,他就可以给你提个 Issue ,即问题,提的问题 多了,也就是 Issues ,然后你看到了这些问题就可以去逐个修复,修复ok了就可以一个个的 Close 掉。
- Star
这个好理解,就是给项目点赞,但是在 GitHub 上的点赞远比微博、知乎点赞难的多,如果你有一个项目获得100个star都算很不容易了!
- Fork
这个不好翻译,如果实在要翻译我把他翻译成分叉,什么意思呢?你开源了一个项目,别人想在你这个项目的基础上做些改进,然后应用到自己的项目 中,这个时候他就可以 Fork 你的项目,这个时候他的 GitHub 主页上就多了一个项目,只不过这个项目是基于你的项目基础(本质上是在原有项目的基 础上 新建了一个分支,分支的概念后面会在讲解Git的时候说到),他就可以随心所欲的去改进,但是丝毫不会影响原有项目的代码与结构。
- Pull Request
发起请求,这个其实是基于 Fork 的,还是上面那个例子,如果别人在你基础上做了改进,后来觉得改进的很不错,应该要把这些改进让更多的人收益, 于是就想把自己的改进合并到原有项目里,这个时候他就可以发起一个 Pull Request(简称PR) ,原有项目创建人就可以收到这个请求,这个时候他会 仔细review你的代码,并且测试觉得OK了,就会接受你的PR,这个时候你做的改进原有项目就会拥有了。
- Watch
这个也好理解就是观察,如果你 Watch 了某个项目,那么以后只要这个项目有任何更新,你都会第一时间收到关于这个项目的通知提醒。
- Gist
有些时候你没有项目可以开源,只是单纯的想分享一些代码片段,那这个时候 Gist 就派上用场了!
参考自 简书stormzhang大佬 链接:http://www.jianshu.com/p/d9f9bba4da0f
什么是Github?的更多相关文章
- 搜刮一些开源项目的APP
iOS完整App资源收集 <iOS完整app资源收集> <GitHub 上有哪些完整的 iOS-App 源码值得参考?> <GitHub 上有哪些完整的 iOS-App ...
- 【原】Github+Hexo+NextT搭建个人博客
摘要 GitHub 是一个开源项目的托管网站,相信很多人都听过.在上面有很多高质量的项目代码,我们也可以把自己的项目代码托管到GitHub,与朋友们共享交流.GitHub Pages 是Github为 ...
- TODO:GitHub创建组织的步骤
TODO:GitHub创建组织的步骤 使用GitHub进行团队合作,写这个步骤主要作用是为了OneTODO作为一个团队组织进行代码的分享,让更多人来参与. 使用帐号.密码登录GitHub 2.右上角加 ...
- GitHub实战系列汇总篇
基础: 1.GitHub实战系列~1.环境部署+创建第一个文件 2015-12-9 http://www.cnblogs.com/dunitian/p/5034624.html 2.GitHub实战系 ...
- 清空Github上某个文件的历史版本
title: 清空Github上某个文件的历史版本 author: 青南 date: 2015-01-08 16:04:53 categories: [经验] tags: [Github,histor ...
- 预览github里面的网页或dome
1.问题所在: 之前把项目提交到github都可以在路径前面加上http://htmlpreview.github.io/?来预览demo,最近发现这种方式预览的时候加载不出来css,js(原因不详) ...
- python爬取github数据
爬虫流程 在上周写完用scrapy爬去知乎用户信息的爬虫之后,github上star个数一下就在公司小组内部排的上名次了,我还信誓旦旦的跟上级吹牛皮说如果再写一个,都不好意思和你再提star了,怕你们 ...
- gitHub使用入门和github for windows的安装教程
在看这篇教程之前我想大家也在搜索怎样使用gitHub托管自己的项目,在使用gitHub之前我也遇到过各种问题,在网上我也搜索了很多,但总觉得网上搜索到的东西很多很杂,有的根本不知道是在表达什么.在这过 ...
- 【项目管理】GitHub使用操作指南
GitHub使用操作指南 作者:白宁超 2016年10月5日18:51:03> 摘要:GitHub的是版本控制和协作代码托管平台,它可以让你和其他人的项目从任何地方合作.相对于CVS和SVN的联 ...
- 使用github远程仓库
经过几天对github的研究,终于把自己想完成的给解决了,发现google真的有很多解释,但是很多也会出现一些bug,对于初学者真的很多烦恼,所以整理一份,能给初识github的你有所帮助 一,首先, ...
随机推荐
- POJ 1089
#include <iostream> #include <algorithm> #define MAXN 50005 using namespace std; struct ...
- 用expect解决批量Linux集群机器间SSH免密码访问
转自:http://blog.csdn.net/aichaoguy/article/details/11693269#!/bin/bash #check whether package 'expect ...
- 监督学习——决策树理论与实践(上):分类决策树
1. 介绍 决策树是一种依托决策而建立起来的一种树.在机器学习中,决策树是一种预测模型,代表的是一种对象属性与对象值之间的一种映射关系,每一个节点代表某个对象/分类,树中的每一个分叉路 ...
- Spring Security构建Rest服务-1100-单机Session管理
Session失效时间: springboot配置session失效时间,只需要在application.properties里配置 #session超时时间,低于60秒按60秒server.sess ...
- C# base和this ---转载 小昊
new关键字引起了大家的不少关注,尤其感谢 Anders Liu的补充,让我感觉博客园赋予的交流平台真的无所不在.所以,我们就有必要继续这个话题,把我认为最值得关注的关键字开展下去,本文的重点是访问关 ...
- 初始JAVA中浅拷贝和深拷贝
1. 简单变量的复制 public static void main(String[] args) { int a = 5; int b = a; System.out.println(a); Sys ...
- Android-NDK处理用户交互事件
在 android_main(struct android_app* state)函数里面设置输入事件处理函数:state->onInputEvent = &handleInput;// ...
- leetcode--539. Minimum Time Difference
Given a list of -hour clock time points in "Hour:Minutes" format, find the minimum minutes ...
- Spanner:谷歌新一代全球部署的列式数据库
Spanner 是一个可扩展的.全球分布式的数据库,提供分布式ACID. 架构 universe:一个部署的实例成为universe,目前谷歌有3个,分别为开发/测试/线上 Zone:一个数据中心,相 ...
- 国际化实现之安装脚手架vue以及打包问题
做这个项目用的是vue+element UI来实现的响应式布局,现主要说一下国际化这块的实现. 第一步:新建文件夹i18n 第二步:配置cn.js.en.js等文件内容 cn.js import en ...