一、Github简介
GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git作为唯一的版本库格式进行托管,故名GitHub。GitHub于2008年4月10日正式上线,除了Git代码仓库托管及基本的Web管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。目前,其注册用户已经超过350万,托管版本数量也是非常之多,其中不乏知名开源项目RubyonRails、jQuery、python等。
二、Github的功能
那么Github有什么功能呢?作为开源代码库以及版本控制系统,Github拥有超过900万开发者用户。GitHub可以托管各种git库,并提供一个web界面,但它与外国的SourceForge、GoogleCode或中国的coding的服务不同,GitHub的独特卖点在于从另外一个项目进行分支的简易性。为一个项目贡献代码非常简单:首先点击项目站点的“fork”的按钮,然后将代码检出并将修改加入到刚才分出的代码库中,最后通过内建的“pullrequest”机制向项目负责人申请代码合并。gitHub是一个面向开源及私有软件项目的托管平台,具有git代码仓库托管和基本的Web管理界面。除此之外还提供了文本渲染、在线文件编辑器、代码片段分享(Gist)等功能。GitHub系统由GitHub公司的开发者ChrisWanstrath开发。系统采用了RubyonRails和Erlang作为后端。GitHub的许可条款并不要求公有仓库满足自由软件标准。GitHub官网被称之为全球最大的社交编程及代码托管网站。
三、Github简明教程
(1)创建新仓库
创建新文件夹,打开,然后执行gitinit以创建新的git仓库。
(2)检出仓库
执行如下命令以创建一个本地仓库的克隆版本:gitclone/path/to/repository
如果是远端服务器上的仓库,用户的命令会是这个样子:gitcloneusername@host:/path/to/repository
(3)工作流
用户的本地仓库由git维护的三棵“树”组成。第一个是用户的工作目录,它持有实际文件;第二个是暂存区(Index),它像个缓存区域,临时保存用户的改动;最后是HEAD,它指向用户最后一次提交的结果。
(4)推送改动
用户的改动现在已经在本地仓库的HEAD中了。执行如下命令以将这些改动提交到远端仓库:
gitpushoriginmaster
可以把master换成用户想要推送的任何分支。如果用户还没有克隆现有仓库,并欲将用户的仓库连接到某个远程服务器,用户可以使用如下命令添加:
gitremoteaddorigin<server>
如此用户就能够将用户的改动推送到所添加的服务器上去了。
(5)分支
分支是用来将特性开发绝缘开来的。在用户创建仓库的时候,master是”默认的”分支。在其他分支上进行开发,完成后再将它们合并到主分支上。创建一个叫做”feature_x”的分支,并切换过去:
gitcheckout-bfeature_x
切换回主分支:
gitcheckoutmaster
再把新建的分支删掉:
gitbranch-dfeature_x
除非用户将分支推送到远端仓库,不然该分支就是不为他人所见的:
gitpushorigin<branch>
(6)更新与合并
要更新用户的本地仓库至最新改动,执行:
gitpull
以在用户的工作目录中获取(fetch)并合并(merge)远端的改动。
要合并其他分支到用户的当前分支(例如master),执行:
gitmerge<branch>
在这两种情况下,git都会尝试去自动合并改动。遗憾的是,这可能并非每次都成功,并可能出现冲突(conflicts)。这时候就需要用户修改这些文件来手动合并这些冲突(conflicts)。改完之后,用户需要执行如下命令以将它们标记为合并成功:
gitadd<filename>
在合并改动之前,用户可以使用如下命令预览差异:
gitdiff<source_branch><target_branch>
(7)替换本地改动
假如用户操作失误(当然,这最好永远不要发生),用户可以使用如下命令替换掉本地改动:
gitcheckout--<filename>
此命令会使用HEAD中的最新内容替换掉用户的工作目录中的文件。已添加到暂存区的改动以及新文件都不会受到影响。
假如用户想丢弃用户在本地的所有改动与提交,可以到服务器上获取最新的版本历史,并将用户本地主分支指向它:
gitfetchorigin
gitreset--hardorigin/master
(8)实用小贴士
内建的图形化git:gitk
彩色的git输出:gitconfigcolor.uitrue
显示历史记录时,每个提交的信息只显示一行:gitconfigformat.prettyoneline
交互式添加文件到暂存区:gitadd-i
四、如何高效利用GitHub
(1)了解GitHub风格
Gravatars的创始人、Jekyll作者、GitHub创始人,现任CTOTom在GitHub第一年学到的10大教训、创业学校演讲中谈到GitHub文化的方方面面。简单将这种风格总结为以下要点:
专注创作,高创意
运营良好与较高的内外满意度
高利润,较低的融资额或零融资
(2)学会向他人学习
GitHub本身建构在git之上,git成为必要工具,以下读物成为首选:
《git大白话入门,木有高深内容》
《为什么git胜过X…》
如果希望进一步深入,可以阅读已有中文翻译版的材料:
《progit》:GitHub公司传道士schacon所作,已翻译成多国语言,当然,有中文版。
《GitMagic》:已有志愿者翻译中文版。
同样,如果希望了解更多GitHub自身的知识,GitHub官方文档值得推荐:
《TheGitHubHep》
同时,可在以下地方学习:
GitHub上的代码库本身:尤其是:Explore、热门关注信息库两个栏目;
GitHub官方推荐:GitHub自身的官方博客与GitHub员工们的个人博客推荐的项目与开发者;
各类社交媒体上提到的的GitHub库:尤其是HackerNews上提到的GitHub库。
(3)代码帮用户找工作
NumEricR(非GitHub工作人员)基于GitHubPages功能做了一个简历生成器,使用极其简单,登陆网站GitHub简历生成器,填入用户的GitHub网站用户名即可。
因为GitHub上的代码无法造假,也容易通过用户关注的项目来了解知识面的宽度与深度。现在越来越多知名公司活跃在GitHub,发布开源库并招募各类人才,例如:Facebook、Twitter、Yahoo…
开始有了第三方网站提供基于GitHub的人才招聘服务,例如:
GitHire:通过它,可以找出用户所在地区的程序员。
Gitalytics.com:通过它,能评估某位程序员在GitHub、LinkedIn、StackOverflow、hackernews等多个网站的影响力。