最近感覺自己電腦上的代碼太亂了,東一塊、西一塊……于是決定使用正規(guī)的源代碼管理軟件來(lái)管理自己以后寫的代碼。以前做小項(xiàng)目的時(shí)候用過(guò)TortoiseSVN,感覺不錯(cuò),但是速度上有點(diǎn)慢,于是決定嘗試一下新東西——Git。通過(guò)網(wǎng)絡(luò)發(fā)現(xiàn)Git很火,看看下面的文字你就會(huì)知道Git有多火。
Git 是一個(gè)分布式的版本控制系統(tǒng),最初由Linus Torvalds編寫,用作Linux內(nèi)核代碼的管理。在推出后,Git在其它項(xiàng)目中也取得了很大成功,尤其是在Ruby社區(qū)中。目前,包括 Rubinius和Merb在內(nèi)的很多知名項(xiàng)目都使用了Git。Git同樣可以被諸如Capistrano和Vlad the Deployer這樣的部署工具所使用。
目前大部分的版本控制都需要一個(gè)服務(wù)器端,commit時(shí)提交到服務(wù)器端。git雖然是分布式的管理工具,但它也可以使用集中管理的方式。舉例來(lái)說(shuō),billy創(chuàng)建了一個(gè)新項(xiàng)目,tom覺得這個(gè)項(xiàng)目比較有意思,他想玩玩看,他可以把整個(gè)repo(reoisitories)都clone到本地,并且在他clone下來(lái)的項(xiàng)目中自己有一個(gè)repo。tom可以自由的對(duì)這個(gè)repo做各種提交修改,直到他滿意為止。這時(shí)tom可以告訴billy,他改了一些什么,若billy覺得不錯(cuò),可以從tom那邊f(xié)etch并merge到本地。
如前所述,作為一個(gè)分布式的版本控制系統(tǒng),在Git中并不存在主庫(kù)這樣的概念,每一份復(fù)制出的庫(kù)都可以獨(dú)立使用,任何兩個(gè)庫(kù)之間的不一致之處都可以進(jìn)行合并。正因?yàn)槿绱耍杂辛薌ithub這個(gè)網(wǎng)站,github是基于ruby的并揉合多種語(yǔ)言進(jìn)行開發(fā)的,上面的ruby項(xiàng)目也非?;钴S。在github 中,每個(gè)人都可以有多個(gè)repo,這些repo都是與用戶綁定在一起的。user之間可以互相clone repo、fork repo、watch repo或是 follow其他user,就好像twitter或是plurk等社交網(wǎng)站一樣。
不過(guò)若使用免費(fèi)的github則所有的repo都要是public且有300M容量的限制。若希望有private的repo,則需要跟付費(fèi)才可。github另外還有剪貼簿的功能,可將代碼貼到其中并自由的發(fā)展各種branch。
GitHub 可以托管各種git庫(kù),并提供一個(gè)web界面,但與其它像 SourceForge或Google Co
de這樣的服務(wù)不同,GitHub的獨(dú)特賣點(diǎn)在于從另外一個(gè)項(xiàng)目進(jìn)行分支的簡(jiǎn)易性。為一個(gè)項(xiàng)目貢獻(xiàn)代碼非常簡(jiǎn)單:首先點(diǎn)擊項(xiàng)目站點(diǎn)的“fork”的按 鈕,然后將代碼檢出并將修改加入到剛才分出的代碼庫(kù)中,最后通過(guò)內(nèi)建的“pull request”機(jī)制向項(xiàng)目負(fù)責(zé)人申請(qǐng)代碼合并。已經(jīng)有人將GitHub稱為代碼玩家的Facebook。
看了上面的簡(jiǎn)介,感覺不錯(cuò)吧。那我們現(xiàn)在開始行動(dòng)吧。
這里主要涉及的軟件包括msysgit和TortoiseGit。
msysgit的下載地址:http://msysgit.googlecode.com/files/Git-1.7.4-preview20110204.exe
TortoiseGit的下載地址:http://code.google.com/p/tortoisegit/downloads/list(選擇你心儀的版本下載)
在安裝 TortoiseGit 之前,你的 Windows PC 上必須先安裝 msysgit。因?yàn)榇顺绦蛱峁┝?Git 核心。而且安裝順序是:先安裝 msysgit,然后安裝 TortoiseGit。如果你弄反了,也沒(méi)有關(guān)系,可以進(jìn)入 TortoiseGit 的設(shè)置界面(右鍵菜單上 TortoiseGit -> Settings -> General -> MSysGit -> Path),手動(dòng)指定 Git 核心文件的位置(例如 c:\Program Files\Git\bin)。發(fā)現(xiàn)沒(méi)有,當(dāng)你進(jìn)入設(shè)置界面的時(shí)候,已經(jīng)配置好了,不得不說(shuō)現(xiàn)在的軟件做得可真周到。
前文說(shuō)了,github就是程序員的facebook,所以我們應(yīng)該有自己的賬號(hào)。賬號(hào)分兩種,免費(fèi)賬號(hào)和付費(fèi)賬號(hào)。使用免費(fèi)的github,所有的repo都要是public且有300M容量的限制;若希望有private的repo,則需要付費(fèi)才可。本著自由交流的態(tài)度,還是申請(qǐng)一個(gè)免費(fèi)的賬號(hào)吧。這個(gè)流程很容易,我就不多說(shuō)了。
注冊(cè)后,github會(huì)為大家提供幾個(gè)教程,幫助大家快速學(xué)習(xí)掌握github的使用方法。地址如下:
Set Up Git教程:http://help.github.com/win-set-up-git/
Create a Repo教程:http://help.github.com/create-a-repo/
需要指出的是這些教程使用的是msysgit提供的git bash,如果大家對(duì)命令行很感冒,那么那些教程基本上就夠大家參考了,無(wú)需再瀏覽本文;否則懇請(qǐng)各位繼續(xù)欣賞下文。
本著學(xué)習(xí)的態(tài)度,我按照上述教程走了一下,發(fā)現(xiàn)問(wèn)題:github ssh: connect to host github.com port 22
本人愚鈍,沒(méi)有解決該問(wèn)題……于是還是回到開始的想法,使用TortoiseGit管理自己的Github項(xiàng)目。
在開始菜單中找到TortoiseGit的Settings一項(xiàng),如圖1所示。
圖 1 TortoiseGit中Settings的位置
由于我是64位的電腦,所以會(huì)顯示Settings (64 bit)。左鍵點(diǎn)擊后,進(jìn)入TortoiseGit的設(shè)置界面。可以清楚的看到,MSysGit已經(jīng)配置好了。如果Git.exe的位置為空,請(qǐng)大家自己手動(dòng)設(shè)置好。
圖 2 TortoiseGit的設(shè)置界面
在想放置項(xiàng)目的位置新建一個(gè)文件夾,名稱為HelloGit,右鍵單擊該文件夾,選擇"Git Create repository here…",也就是創(chuàng)建本地的代碼庫(kù)。此時(shí)會(huì)彈出對(duì)話框,選擇"OK"。(PS:不用搭理哪個(gè)復(fù)選框)隨后會(huì)提示成功創(chuàng)建了一個(gè)空的代碼倉(cāng)庫(kù)。
新建一個(gè)README文件,隨意填寫一些信息。然后郵件單擊README,選擇"Git Add…",就是將README文件添加到本地HelloGit項(xiàng)目中。
單擊"commit",將更新提交到本地版本庫(kù)中。
別忘了在"Message"中填寫此次提交所完成的任務(wù),便于以后查看提交信息,對(duì)項(xiàng)目的進(jìn)度有所掌握。單擊"OK",繼續(xù)。
這里提到的溝通橋梁就是通信中使用的密鑰。TortoiseGit 使用擴(kuò)展名為ppk的密鑰,而不是ssh-keygen生成的rsa密鑰。也就是說(shuō)使用ssh-keygen -C "username@email.com" -t rsa產(chǎn)生的密鑰在TortoiseGit中不能用。而基于github的開發(fā)必須要用到rsa密鑰,因此需要用到TortoiseGit的putty key generator工具來(lái)生成既適用于github的rsa密鑰也適用于TortoiseGit的ppk密鑰。
運(yùn)行TortoiseGit開始菜單中的puttygen程序,點(diǎn)擊“Generate”按鈕,鼠標(biāo)在上圖的空白地方來(lái)回移動(dòng)直到進(jìn)度條完畢,就會(huì)自動(dòng)生一個(gè)隨機(jī)的key。
登錄Github官網(wǎng),點(diǎn)擊右上角的"Account Settings",選擇SSH Public Keys->Add another public key,將上面生成的Key粘貼進(jìn)來(lái),選擇"Add Key"。公鑰添加完畢。然后點(diǎn)擊上面對(duì)話框中的"Save private key",將私鑰保存在本地,文件后綴是ppk。
運(yùn)行TortoiseGit開始菜單中的Pageant程序,程序啟動(dòng)后將自動(dòng)??吭谌蝿?wù)欄中,圖標(biāo)顯示為
,雙擊該圖標(biāo),彈出key管理列表。點(diǎn)擊"Add Key",選擇剛才保存的ppk文件,這樣私鑰就添加到key管理列表中了。這是我們的最后一步啦!但是前提是我們得在TortoiseGit中配置好"Remote"。右鍵單擊HelloGit項(xiàng)目,選擇TortoiseGit->Settings,彈出如下對(duì)話框。
我們需要做的工作就是配置Git的Remote項(xiàng)。
Remote就是給該項(xiàng)目起個(gè)名稱,我們就是HelloGit;
Url就是Github上對(duì)應(yīng)的遠(yuǎn)程版本庫(kù)的網(wǎng)絡(luò)地址。各位有沒(méi)有認(rèn)真看前面給的教程呀,建立一個(gè)Repo應(yīng)該沒(méi)有問(wèn)題吧。在本地key管理列表添加好自己的私鑰了吧,在github上的相應(yīng)項(xiàng)目中添加好自己的公鑰了吧,那我們可以繼續(xù)了,不然還得返回到3.4。在網(wǎng)站上進(jìn)入你的項(xiàng)目中,會(huì)看到如下信息:
前面我已經(jīng)講了,在我的電腦上使用SSH,無(wú)法連接到github,所以此處我選擇的是HTTP的方式。git@github.com:username/reponame.git就是我們需要的Url。(PS:username和reponame應(yīng)該是跟你的設(shè)置對(duì)應(yīng)的,在使用中你可別真的原封不動(dòng)地使用git@github.com:username/reponame.git,這可是連不上服務(wù)器的)
Putty處需要填的信息就是我們?cè)诒镜乇4娴乃借€文件的路徑。
填好這三項(xiàng)后,點(diǎn)擊"Add New",就會(huì)在左邊的列表中顯示我們添加好的Remote信息。好了,我們可以進(jìn)行最后一項(xiàng)工作了。右鍵單擊項(xiàng)目HelloGit文件夾,選擇TortoiseGit->Push,彈出對(duì)話框,選擇剛才添加的Remote信息,單擊"OK",成功推送!
聯(lián)系客服