Githug攻略本(一):學(xué)習(xí)Git的金山打字通
原創(chuàng)【51CTO專稿】編者按:從今天開始,51CTO將連續(xù)刊登《Githug攻略本》系列。本系列作者名叫劉輝,長沙小伙兒,熱衷RoR與Git,也做一些iOS開發(fā),《Git Community Book中文版》的譯者,在去年年初寫過《Git歷險(xiǎn)記》系列。這次的系列顧名思義,還是跟Git有關(guān),但卻和一般的教程不太一樣——這是一個(gè)游戲的攻略本。俗話說在游戲中學(xué)習(xí),Githug就是這樣的一個(gè)項(xiàng)目。
本篇是系列***篇,讓不了解Git的各位對(duì)Git和Githug這個(gè)項(xiàng)目有一個(gè)了解,讓了解Git的各位對(duì)Githug這個(gè)項(xiàng)目有一個(gè)了解。這年頭,不用Git的程序員真的已經(jīng)Out了。如果你還沒有下定決心學(xué)習(xí)Git,不妨試試看以Githug做一個(gè)起點(diǎn)。
以下為正文。
為什么要用 Git ?
Git 是 Linus 為了更好的管理 Linux 內(nèi)核而開發(fā)的一個(gè)分布系版本控制軟件,最初的開發(fā)目的為了取代 BitKeeper?,F(xiàn)在,Git 已經(jīng)發(fā)展成目前世界上***的版本控制軟件。
無數(shù)的軟件系統(tǒng)現(xiàn)在正在使用Git : “Linux”、”Android”、”Ruby on Rails”、”Qt” …… 而且現(xiàn)在很多其它以前沒有使用 Git 的開源軟件系統(tǒng)也正在計(jì)劃轉(zhuǎn)向 Git。
程序員的 Facebook
目前對(duì)程序員交流方式影響***的當(dāng)屬 Github,他幾乎改變了開源軟件的協(xié)作方式。
在若干年前,我看開源代碼時(shí),一般是跑到 SourceForge 去搜索,然后下載源代碼。我記得當(dāng)時(shí) SourceForge 用的是 CVS,一般人想在上面申請(qǐng)一帳號(hào)建立倉庫是很難的事情;而且一般的開發(fā)者和項(xiàng)目的 owner 之間互動(dòng)很少。
再后來開始使用 code.google.com,當(dāng)時(shí)使用的是 SVN, 雖然可以自由的申請(qǐng)帳號(hào)創(chuàng)建倉庫,但是開發(fā)者和使用者之間的互動(dòng)并沒有多少改觀。
現(xiàn)在開始使用 github.com,最開始使用 github, 是因?yàn)橄胍g Git Communnity Book中文版。我最開始是自己一個(gè)人把翻譯,譯完后的內(nèi)容提交到自己倉庫 里。后來 liuw 同學(xué)加入了進(jìn)來,他 fork 了我的倉庫,然后每次譯完后他提交到他自己的倉庫,我再把他的工作合并進(jìn)來。再后來,有很多朋友也可過來幫忙,他們 fork 了我的倉庫后,發(fā)現(xiàn)了我翻譯中的問題,直接給發(fā)一個(gè) pull request, 然后要只在 github 界面上點(diǎn)擊,就可以直接合并到我的 倉庫 。
目前大家公認(rèn),github 是程序員的 facebook,當(dāng)然這也和 Git 分布式版本控制的特性密不可分。
Github:程序員的Facebook
Paas 應(yīng)用
讀者中如果有 web developer 的話,肯定對(duì)軟件部署過程的繁瑣深有體會(huì)。
Web應(yīng)用部署(圖片來源)
但是現(xiàn)在:
$ 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 這個(gè) Paas 平臺(tái)的只需要二行命令: heroku create、 git push heroku master就可以在服務(wù)器上創(chuàng)建應(yīng)用并部署;當(dāng)這離不開 Git 的支持。
移動(dòng)開發(fā)
- 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系統(tǒng)的絕大部分源代碼,并且成功編譯。Android 的源碼管理也是基于 Git 的,雖然的有所有擴(kuò)展。
- iOS
從 Xcode4 起,Apple 的 Xcode 就內(nèi)置支持 Git,可以在創(chuàng)建開發(fā)項(xiàng)目時(shí),同時(shí)創(chuàng)建一個(gè) Git 倉庫;如果現(xiàn)在要在 iOS 平臺(tái)開發(fā)復(fù)雜的 App,沒有 Git 的支持真是難以想像!
但是……Git 不好學(xué)。
Git 的學(xué)習(xí)門檻比較高,學(xué)習(xí)的過程有一點(diǎn)點(diǎn)像當(dāng)年學(xué)習(xí)MFC,學(xué)習(xí)的曲線特別陡。Git 標(biāo)準(zhǔn)界面是命令行,雖然的有很多優(yōu)秀的圖形界面工具,但是如果在不了解 Git 的原理(或是說熟練使用 Git 命令行)的情況下,想要成功使用Git,就如同一個(gè) C 程序員不懂 指針 一樣難以想像。
我從去年4月來到現(xiàn)在的公司,開始組隊(duì)開發(fā) iOS 上面的產(chǎn)品,同時(shí)也在 team 里面推廣使用 Git。team 里面有剛畢業(yè)的新人,也有工作經(jīng)驗(yàn)豐富的老手,為了培訓(xùn)使用 Git,我也著實(shí)想了不少辦法,雖然用了起來,但是花了牛力。我當(dāng)時(shí)在想如果一款像金山打字通一樣的練習(xí)軟件,同時(shí)配合相應(yīng)的教程與面對(duì)面交流,定能事半功倍。
前幾個(gè)月,一個(gè)很偶然的機(jī)會(huì),我在 ruby-china 上發(fā)現(xiàn)了有人在介紹使用 githug。
Githug:學(xué)習(xí) 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 官網(wǎng)。簡單的說, githug 是一個(gè) git 游戲,里面設(shè)置很多的關(guān)卡來模擬我們?cè)谑褂?git 命令行的場(chǎng)景;每一個(gè)關(guān)卡是一個(gè)主題,如果把這個(gè)游戲玩轉(zhuǎn)了,同時(shí)再配合著了解一些 Git 的原理,git 的使用應(yīng)沒有多大的問題。
這就是我心目中的那個(gè)金山打字通!
于是我想就配合 githug 來寫一個(gè)教程,來幫助 Git 的初學(xué)者,能讓其在學(xué)習(xí)的過程中起到事半功倍的作用;當(dāng)然以后在公司里的新人培訓(xùn)上自己也可以拿來做教材,真是一舉多得。這就是這次這個(gè)《Githug攻略本》的由來啦。
在本系列的第二篇,我會(huì)介紹如何配置 Git 和 Githug 的環(huán)境。敬請(qǐng)期待!
【51CTO特約專稿,轉(zhuǎn)載請(qǐng)注明出處與原文作者!】