【51CTO专稿】编者按:从今天开始,51CTO将连续刊登《Githug攻略本》系列。本系列作者名叫刘辉,长沙小伙儿,热衷RoR与Git,也做一些iOS开发,《Git Community Book中文版》的译者,在去年年初写过《Git历险记》系列。这次的系列顾名思义,还是跟Git有关,但却和一般的教程不太一样——这是一个游戏的攻略本。俗话说在游戏中学习,Githug就是这样的一个项目。
本篇是系列***篇,让不了解Git的各位对Git和Githug这个项目有一个了解,让了解Git的各位对Githug这个项目有一个了解。这年头,不用Git的程序员真的已经Out了。如果你还没有下定决心学习Git,不妨试试看以Githug做一个起点。
以下为正文。
为什么要用 Git ?
Git 是 Linus 为了更好的管理 Linux 内核而开发的一个分布系版本控制软件,最初的开发目的为了取代 BitKeeper。现在,Git 已经发展成目前世界上***的版本控制软件。
无数的软件系统现在正在使用Git : “Linux”、”Android”、”Ruby on Rails”、”Qt” …… 而且现在很多其它以前没有使用 Git 的开源软件系统也正在计划转向 Git。
程序员的 Facebook
目前对程序员交流方式影响***的当属 Github,他几乎改变了开源软件的协作方式。
在若干年前,我看开源代码时,一般是跑到 SourceForge 去搜索,然后下载源代码。我记得当时 SourceForge 用的是 CVS,一般人想在上面申请一帐号建立仓库是很难的事情;而且一般的开发者和项目的 owner 之间互动很少。
再后来开始使用 code.google.com,当时使用的是 SVN, 虽然可以自由的申请帐号创建仓库,但是开发者和使用者之间的互动并没有多少改观。
现在开始使用 github.com,最开始使用 github, 是因为想要翻译 Git Communnity Book中文版。我最开始是自己一个人把翻译,译完后的内容提交到自己仓库 里。后来 liuw 同学加入了进来,他 fork 了我的仓库,然后每次译完后他提交到他自己的仓库,我再把他的工作合并进来。再后来,有很多朋友也可过来帮忙,他们 fork 了我的仓库后,发现了我翻译中的问题,直接给发一个 pull request, 然后要只在 github 界面上点击,就可以直接合并到我的 仓库 。
目前大家公认,github 是程序员的 facebook,当然这也和 Git 分布式版本控制的特性密不可分。
Github:程序员的Facebook
Paas 应用
读者中如果有 web developer 的话,肯定对软件部署过程的繁琐深有体会。
Web应用部署(图片来源)
但是现在:
$ heroku create Created sushi.herokuapp.com | git@heroku.com:sushi.git $ git push heroku master -----> Heroku receiving push -----> Rails app detected -----> Compiled slug size is 8.0MB -----> Launching... done, v1 http://sushi.herokuapp.com deployed to Heroku
在 heroku 这个 Paas 平台的只需要二行命令: heroku create、 git push heroku master就可以在服务器上创建应用并部署;当这离不开 Git 的支持。
移动开发
- Android
Android 之父 Andy Rubin 在他的微博上有一句被人广为引用的话:
开放的定义是: the definition of open: mkdir android cd android repo init -u git://android.git.kernel.org/platform/manifest.git repo sync make
通过上面的的五行命令,就可以下载 Android系统的绝大部分源代码,并且成功编译。Android 的源码管理也是基于 Git 的,虽然的有所有扩展。
- iOS
从 Xcode4 起,Apple 的 Xcode 就内置支持 Git,可以在创建开发项目时,同时创建一个 Git 仓库;如果现在要在 iOS 平台开发复杂的 App,没有 Git 的支持真是难以想像!
但是……Git 不好学。
Git 的学习门槛比较高,学习的过程有一点点像当年学习MFC,学习的曲线特别陡。Git 标准界面是命令行,虽然的有很多优秀的图形界面工具,但是如果在不了解 Git 的原理(或是说熟练使用 Git 命令行)的情况下,想要成功使用Git,就如同一个 C 程序员不懂 指针 一样难以想像。
我从去年4月来到现在的公司,开始组队开发 iOS 上面的产品,同时也在 team 里面推广使用 Git。team 里面有刚毕业的新人,也有工作经验丰富的老手,为了培训使用 Git,我也着实想了不少办法,虽然用了起来,但是花了牛力。我当时在想如果一款像金山打字通一样的练习软件,同时配合相应的教程与面对面交流,定能事半功倍。
前几个月,一个很偶然的机会,我在 ruby-china 上发现了有人在介绍使用 githug。
Githug:学习 Git 的金山打字通
Githug is designed to give you a practical way of learning git. It has a series of levels, each utilizing git commands to ensure a correct answer.
以上介绍来自 githug 官网。简单的说, githug 是一个 git 游戏,里面设置很多的关卡来模拟我们在使用 git 命令行的场景;每一个关卡是一个主题,如果把这个游戏玩转了,同时再配合着了解一些 Git 的原理,git 的使用应没有多大的问题。
这就是我心目中的那个金山打字通!
于是我想就配合 githug 来写一个教程,来帮助 Git 的初学者,能让其在学习的过程中起到事半功倍的作用;当然以后在公司里的新人培训上自己也可以拿来做教材,真是一举多得。这就是这次这个《Githug攻略本》的由来啦。
在本系列的第二篇,我会介绍如何配置 Git 和 Githug 的环境。敬请期待!
【51CTO特约专稿,转载请注明出处与原文作者!】