引
個(gè)人在iOS的開發(fā)過程中,經(jīng)常會(huì)用到第三方類庫,而這些類庫大都是在GitHub上的,不得不說GitHub確實(shí)是一個(gè)非??岬木W(wǎng)站,實(shí)用一點(diǎn)說這里可以學(xué)習(xí)到很多的東西,也可以和世界各地的開發(fā)人員接觸,勢利一點(diǎn)說,擁有自己經(jīng)常維護(hù)的GitHub賬號(hào),在未來找工作中也會(huì)有加分吧。
但說到底GitHub的原始用途在于進(jìn)行代碼的版本控制,在平常的協(xié)同合作過程中,代碼的版本控制是很重要的事情,如果不加以管理,很快就會(huì)陷入混亂之中,你改動(dòng)了這里,我添加了那里,互相代碼拷貝來拷貝去的也很麻煩,很多時(shí)候也會(huì)想想先測試一個(gè)東西而不影響主體開發(fā)的情況,這些都需要進(jìn)行版本控制。
版本控制有兩種模式:集中管理模式和分布式管理模式。集中管理模式是本地沒有代碼庫只能與服務(wù)器交互,其中SVN最常用;分布式則是在本地也有代碼庫,最常用的就是Git了。而GitHub就是一個(gè)提供中心代碼庫的網(wǎng)站。
自己在一開始學(xué)習(xí)使用GitHub進(jìn)行代碼版本管理時(shí),也是一頭霧水,即使知道為什么要管理,也理解一些分支合并等的概念,但由于Git管理有各種命令行操作,對(duì)于初學(xué)者來說還是有一點(diǎn)迷糊,結(jié)合著看了很多教程才最終成功,即使在提交了第一個(gè)文件到GitHub后,也還是有一些地方不太明白,因此現(xiàn)在也想好好地詳細(xì)說一說這個(gè)過程,希望可以給初學(xué)者帶來方便,也可以和大家討論。
安裝Git
使用Git的第一步就是安裝Git,需要先下載Git安裝包,看到別的教程提供的一個(gè)Google的下載地址自己一直打不開,也不知道是不是被墻了,自己搜索了一下,下載地址如下:http://git-scm.com/download/
這個(gè)應(yīng)該是官網(wǎng)的下載地址,響應(yīng)速度還挺快的,可以下載各個(gè)系統(tǒng)的Git安裝包,這里選擇下載Mac端的就好了。然后打開進(jìn)行安裝,奇特的是居然是來自不受信任的開發(fā)商安裝不了,解決方法是到打開“設(shè)置”--》“安全性與隱私”,然后允許安裝就好了。Git安裝后是沒有應(yīng)用程序可以點(diǎn)擊打開的,需要通過命令行進(jìn)行操作,這也是第一次接觸有點(diǎn)迷糊的原因,不太習(xí)慣,也有很多圖形化的操作工具,需要的可以搜索一下。到這里就安裝完畢了,但離使用還遠(yuǎn)呢。
注冊(cè)GitHub
上面也說了,GitHub是一種網(wǎng)站,也可以視為一個(gè)中心代碼庫,我們使用它,可以將本地代碼庫中的工程提交上去,也可以從上面獲取下來,而這個(gè)網(wǎng)站就是方便我們進(jìn)行管理自己的庫,查看他人的庫的,同時(shí)也可以找到很多優(yōu)秀的示例,如iOS開發(fā)中的眾多第三方類庫就給iOS開發(fā)帶來了極大的便利。
注冊(cè)很簡單,與一般網(wǎng)站的注冊(cè)過程并無什么不同,打開GitHub網(wǎng)站:https://github.com/ ,選擇注冊(cè)Sign up,對(duì)了,這個(gè)網(wǎng)站是全英文的,上面也會(huì)有世界各地的人,所以對(duì)于英文水平倒是一個(gè)挑戰(zhàn),英文不好的話用起來可能會(huì)比較艱難,不過也是一個(gè)提高自己英文水平的機(jī)會(huì)嘛。注冊(cè)時(shí)會(huì)讓你選擇賬號(hào)模式:免費(fèi)賬號(hào)和收費(fèi)賬號(hào)等,我們一般都是注冊(cè)免費(fèi)賬號(hào),免費(fèi)賬號(hào)不能創(chuàng)建私有項(xiàng)目,也就是你的項(xiàng)目都能被看到,每個(gè)公有賬號(hào)不能超過300MB的存儲(chǔ)空間。
SSH公鑰
自己在第一次學(xué)習(xí)使用Git時(shí),看到所有教程都說到了一個(gè)SSH密鑰的東西,但實(shí)在是不能理解這個(gè)東西是干嘛的,后來看書了解了一下:為了和服務(wù)器通信,需要選擇通信協(xié)議,而Git通信中普遍使用的就是SSH協(xié)議,采用公鑰認(rèn)證SSH登錄,可以實(shí)現(xiàn)無口令登錄遠(yuǎn)程服務(wù)器,這也是我們生成SSH公鑰的主要原因。可能你還是不太理解,沒關(guān)系這里按照步驟生成并設(shè)置一下就可以用了,后來可以慢慢去理解。
打開終端,終端就是Mac中相當(dāng)于Windows下cmd一樣的存在,點(diǎn)擊下方deck中火箭圖標(biāo)的Launchpad,找到終端打開就好。
輸入.ssh,檢查是否已經(jīng)存在ssh,如果存在,先將已有的ssh備份,或者將新建的ssh生成到另外的目錄下,如果不存在,那么直接生成ssh:
$ssh-keygen -t rsa -C xxxxx@gmail.com(注冊(cè)github時(shí)的email)
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/twer/.ssh/id_rsa):
Created directory '/Users/twer/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/twer/.ssh/id_rsa.
Your public key has been saved in /Users/twer/.ssh/id_rsa.pub.
The key fingerprint is:
18:16:11:c9:01:6c:48:09:7f:27:c6:43:0d:7f:3f:84 xxxxx@gmail.com
The key's randomart image is:
+--[ RSA 2048]----+
|.o.++=== |
|.ooo.+. . |
| ..* = E . |
| o = + o |
| . S o |
| . |
| |
| |
| |
+-----------------+
這樣ssh就生成好了,生成之后再上面的可以看到存放的地址,不過是被默認(rèn)隱藏的,一個(gè)是id_rsa文件,這是私鑰文件,保存到客戶端就好,另一個(gè)是id_rsa.pub文件,是公鑰文件,要存放在服務(wù)端,在這里,就是要給到我們的GitHub賬號(hào)中去,所以我們需要打開這個(gè)id_rsa.pub文件并獲取其中的內(nèi)容,因?yàn)樗请[藏的,所以或者先設(shè)置顯示Finder中隱藏的文件然后打開,或者直接用命令行通過上面給出的路徑打開:
$open /Users/twer/.ssh/id_rsa.pub
完全復(fù)制其中的內(nèi)容,然后打開你登錄后的GitHub網(wǎng)站,看右上角:

點(diǎn)擊那個(gè)齒輪的Settings按鈕,進(jìn)入設(shè)置界面,在左邊是設(shè)置選項(xiàng),選擇SSH Keys:

在這里添加ssh公鑰到你的GitHub賬戶:
Title:you@email.com
Key:填上剛才復(fù)制的id_rsa.pub文件中的SSH公鑰
點(diǎn)擊Add key后就可以了,現(xiàn)在通過終端可以測試一下是不是連接到了,在終端中輸入:
$ssh -T git@github.com
Hi Cloudox! You've successfully authenticated, but GitHub does not provide shell access.
如果出現(xiàn)了第二行的信息,表示連接成功,接下來就可以上傳你的工程到GitHub了。
GitHub上創(chuàng)建遠(yuǎn)程代碼庫
要想和人共享代碼,當(dāng)然需要在GitHub上有一個(gè)遠(yuǎn)程的存放代碼的庫,現(xiàn)在說說怎么創(chuàng)建:
登錄GitHub后,還是在右上角

有一個(gè)加號(hào),點(diǎn)擊出現(xiàn)下拉菜單

選擇New repository,也就是創(chuàng)建新代碼倉庫,進(jìn)入創(chuàng)建倉庫頁面

這里填寫遠(yuǎn)程代碼倉庫的信息:
Repository name:代碼倉庫名,最終顯示的標(biāo)題,也是他人搜索的關(guān)鍵詞
Description:對(duì)代碼倉庫的描述,并不是readme文件
Public:選擇代碼倉庫公開
接下來別的不用管了,直接點(diǎn)擊Create repository創(chuàng)建就好了,創(chuàng)建后后生成一個(gè)鏈接:

這個(gè)鏈接就是你在本地開發(fā)時(shí),要傳入遠(yuǎn)程倉庫時(shí),設(shè)置的鏈接,這個(gè)后續(xù)再說,但這個(gè)鏈接需要保存下來。界面下方是一個(gè)提示,可以通過這些命令行來進(jìn)行代碼版本控制管理。
使用命令行來進(jìn)行代碼版本控制
很多人會(huì)通過命令行來進(jìn)行g(shù)it操作,各個(gè)平臺(tái)都是一致的,現(xiàn)在簡單介紹一些常用的git命令:
- git help <命令>
這個(gè)可以查詢命令的幫助信息。 - git log
查看Git的日志信息。 - git init
創(chuàng)建一個(gè)本地的新代碼庫,或者初始化一個(gè)已存在的本地庫,如果想在目錄test中創(chuàng)建代碼庫:
$ mkdir test
$ cd test
$ git init
即可,然后在test目錄中添加工程就可以了。
- git add
更新索引,記錄代碼庫中哪些文件有修改或者添加,為更新代碼庫做準(zhǔn)備,如果只想把指定文件更新到索引中: - git add filename
支持通配符。 - git rm filename
刪除索引中的文件,支持通配符。 - git commit
按照索引更新代碼庫,也就是提交到本地代碼庫,也可以添加注釋: - git commit -m 'Cloudox commit'
-m設(shè)定注釋信息。 - git status
查看當(dāng)前git狀態(tài),包括哪些文件修改、刪除和添加了,但是沒有提交的信息。 - git branch testing
創(chuàng)建一個(gè)名為testing的分支,當(dāng)我們需要測試一個(gè)新東西而不想變更主體時(shí),可以創(chuàng)建一個(gè)分支去測試,穿件完成后,可以查看分支情況:
$ git branch
* master
testing
其中帶*號(hào)的是當(dāng)前操作的分支,master是git默認(rèn)創(chuàng)建的主分支。
- git chekout testing
切換到testing分支來進(jìn)行操作。
如果要覺得testing分支中的測試成功,想合并到主分支上,先切換回master分支,然后在這時(shí)使用合并命令:
- git merge testing
就可以把testing分支合并到主干上。 - git branch -d testing
刪除testing分支。 - git remote add Test git@xxxxxxxx
- git push Test master
還記得上面在GitHub上創(chuàng)建遠(yuǎn)程代碼庫時(shí),保存了一個(gè)鏈接么,這里就要用到了,這里是把本地代碼庫中master分支的內(nèi)容,上傳到遠(yuǎn)程代碼庫中,第一句中Test是給遠(yuǎn)程倉庫取得名字,@后面的就是之前保存的鏈接?,F(xiàn)在去刷新一下GitHub頁面就可以看到本地的代碼已經(jīng)上傳到網(wǎng)頁了并且可以查看,現(xiàn)在也可以編輯一下README的內(nèi)容來進(jìn)行一下說明。
- git clone git@xxxxxxx
當(dāng)本地沒有遠(yuǎn)程代碼庫中的東西時(shí),這里可以把遠(yuǎn)程代碼庫中的東西克隆到本地倉庫中來。同樣填寫的是遠(yuǎn)程代碼庫的鏈接。 - git fetch Test
- git clone git@xxxxxxx
當(dāng)本地沒有遠(yuǎn)程代碼庫中的東西時(shí),這里可以把遠(yuǎn)程代碼庫中的東西克隆到本地倉庫中來。同樣填寫的是遠(yuǎn)程代碼庫的鏈接。 - git fetch Test使用Xcode進(jìn)行Git操作
其實(shí)使用命令行操作還是比較麻煩的,Xcode同樣自帶支持Git操作,安裝Git后就可以使用了。
創(chuàng)建一個(gè)新工程時(shí),當(dāng)進(jìn)行到存放目錄選擇界面時(shí),下方可以看到多了一個(gè)選項(xiàng)就是是否在本地創(chuàng)造Git代碼庫:

勾選之后就會(huì)創(chuàng)建Git本地代碼庫了,非常簡單。
Xcode管理git
創(chuàng)建工程后,Xcode上方一系列菜單中會(huì)有一個(gè)Source Control,這里就是進(jìn)行代碼版本控制管理的:

點(diǎn)開后,有一系列剛才說到過的操作,這里說一說常用的,首先是提交Commit:

點(diǎn)擊后進(jìn)入提交界面,下方可以輸入注釋,左下角可以選擇是否同時(shí)提交到遠(yuǎn)程代碼庫:

這樣就可以提交到本地代碼庫了,如果要提交到遠(yuǎn)程GitHub上的代碼庫,選擇上面列表的第二項(xiàng),然后選擇最后一項(xiàng)Configure:

在出來的界面中,選擇中間的Remotes,左下角的加號(hào),Add Remote...:

在出來的界面中,填寫給遠(yuǎn)程代碼庫取的名字和鏈接即可。
然后在之前的Source Control列表中,選擇Push就可以上傳到遠(yuǎn)程代碼庫了。
這個(gè)列表中的其他選項(xiàng)如Check Out是檢出,History是查看提交歷史,還可以選擇創(chuàng)建分支、切換分支、合并分支等等,知道了上述的Git語句之后,這里的操作就顯得非常的明了而且簡單了。
結(jié)
到此為止,好像該說的基本說完了,我現(xiàn)在也是剛剛學(xué)會(huì)使用,很多操作如分支、合并等也還沒有使用過,上傳更多是一種樂趣而不是協(xié)作什么,因?yàn)镚itHub的個(gè)人界面中有一個(gè)Contributions的方格列表,記錄了你最近一年每天的提交數(shù)量并通過顏色深淺表示了出來,基本一看這個(gè)表就能看出你是否經(jīng)常提交。我想GitHub對(duì)于找工作的人還是有很大加分的吧,如果有很多提交、對(duì)重要的項(xiàng)目有貢獻(xiàn)、得到的星星很多,肯定是極好的吧~