Git是目前世界上最先進的分布式版本控制系統(tǒng),其實 Git 跟 SVN一樣有自己的集中式版本庫或服務器,但是Git 更傾向于被使用于分布式模式,也就是每個開發(fā)人員從中心版本庫/服務器上chect out代碼后會在自己的機器上克隆一個跟中心版本庫一模一樣的本地版本庫。可以這樣說,如果你被困在一個不能連接網(wǎng)絡的地方時,你仍然能夠提交文件,查看log(歷史版本記錄),創(chuàng)建項目分支等。
說到git,我們不得不拿svn作比較。
SVN的優(yōu)點:
1、采用集中式,易于管理,保證安全性;
2、管理方便,邏輯明確,理念符合常規(guī)思維;
3、代碼的一致性高;
4、適合人數(shù)不多的項目開發(fā);
5、允許一個文件有任意多的可命名屬性,會關(guān)注所有的文件類型;
6、支持二進制文件,更容易處理大文件;
7、支持空目錄。
SVN的缺點:
1、服務器壓力太大,數(shù)據(jù)庫容量暴增;
2、必須連接在服務器上,否則基本不能工作、提交、對比、還原等;
3、不適合開源開發(fā)。
===========================
Git的優(yōu)點:
1、適合分布式開發(fā),強調(diào)個體;
2、公共的服務器壓力和數(shù)量都不會太大;
3、速度快, 成熟的架構(gòu),開發(fā)靈活;
4、任意兩個開發(fā)者之間可以很容易的解決沖突;
5、離線工作,管理代碼成本低,不需要依賴服務器;
6、部署方便。基本上下個命令就可以用;
7、良好的分支機制,可以讓主干代碼保持干凈。
Git的缺點:
1、資料少,學習成本比較大,學習周期比較長,要求人員素質(zhì)比較高;
2、不符合常規(guī)思維;
3、代碼保密性差,一旦開發(fā)者把整個庫克隆下來就可以完全公開所有代碼和版本信息。

git主要分為工作區(qū)、暫緩區(qū)、和Head指針。工作流程大概是這樣的:
- 其中我們編寫代碼的地方,就是工作區(qū);
- 執(zhí)行g(shù)it status,會出現(xiàn)紅色的,這就代表代碼放在了工作區(qū); 執(zhí)行
3.執(zhí)行g(shù)it add .,在執(zhí)行g(shù)it status,會有紅色代碼,說明我們將代碼add到了暫緩區(qū) - git commit -m "提交",就會出現(xiàn)綠色代碼,說明我們把代碼提交了本地倉庫;
- 這時候我們需要git push,將代碼推到遠程倉庫;
- 執(zhí)行g(shù)it pull,是將遠程倉庫的代碼拉取到本地;
下面我們開始正式學習git的使用。
1、創(chuàng)建本地代碼倉庫

cd 文件夾
git init
進入到文件夾,可以看到下圖,說明我們的倉庫創(chuàng)建好了

2、增
touch main.c
創(chuàng)建main.c文件成功后,文件夾中會出現(xiàn)main.c文件,然后我們在該文件中可以添加文字
git status
我們在終端執(zhí)行g(shù)it status,會出現(xiàn)如下圖,其中紅色區(qū)域,就代表我們的暫緩區(qū)

此時我們需要執(zhí)行g(shù)it add .,然后再執(zhí)行g(shù)itstatus,查看狀態(tài),會發(fā)現(xiàn)變成了綠色的,最后我們在執(zhí)行g(shù)it commit -m "提交main.c文件",此時我們就把文件提交到了本地倉庫。
git add .
git ststus
git commit -m "提交main.c文件"

查看版本信息
git log

通過查看log日志,發(fā)現(xiàn)我們已經(jīng)增加完成,log日志包括了日期、作者和注釋
3、修改
在main.c文件中做任意修改,后面的具體操作看下圖,說明修改完成

4、刪除
兩種方式:
1:右鍵本地刪除(此操作不會添加添加到暫緩區(qū),自己git status查看)
2:執(zhí)行g(shù)it rm main.c,會發(fā)現(xiàn)文件夾中的main.c文件被刪除了,具體操作看下圖
git rm main.c

5、回滾
回滾需要知道回滾的唯一標示,git log日志中的commit......就是唯一標示

執(zhí)行 git reflog,可以得到7位的唯一標示、或者在log中直接復制commit后面的前7位
git reset --hard 2027540

執(zhí)行過git reset --hard xx,會發(fā)現(xiàn)文件夾中回滾到了你指定回到的節(jié)點。
上面的只是git的創(chuàng)建、增刪改、回滾基本操作,下面我們將進行g(shù)it團隊開發(fā)的操作。
團隊使用git

我們假設我們的團隊開發(fā)有兩人,分別是項目經(jīng)理和開發(fā)者,那么我們就需要上圖中的文件目錄,其中Developer代表開發(fā)者,Manner代表項目經(jīng)理,ShareServer代表共享倉庫
1、創(chuàng)建共享倉庫
cd 文件夾
git init --bare

2、項目經(jīng)理將項目搭建,需要從倉庫拉取下來代碼
cd Manner文件夾
git clone ShareServer

執(zhí)行上面代碼,將倉庫文件夾克隆到項目經(jīng)理的文件夾
3、配置忽略文件
我們平時會有一些不需要的文件,這個時候我們可以配置忽略文件,將不需要的過濾掉。步驟如下:
1.創(chuàng)建忽略文件
touch .gitignore
2.配置略文件
(1) github中拷貝需要忽略的內(nèi)容(github搜 索.gitignore->找星最多的,點進去,找到object-c,打開復制;
(2)進入github(https://github.com),搜索.gitignore,回車;
(3)找到Object-C點進去;
(4)復制所有內(nèi)容到.gitignore文件中;
(5)剩余操作如下
git add .
git commit -m "添加忽略文件"
git push

需要注意的是,下面.git與.gitignore為同一目錄

4、創(chuàng)建工程
a、創(chuàng)建xcode文件,放到ShareServer目錄下,與.git、.gitignore同一目錄
b、查看git status

c、緊接著初始化項目
git commit -m "初始化工程完成"

到此本地倉庫創(chuàng)建完成,但是還沒有push到遠程倉庫
d、git push到遠程倉庫
git push

e、這個時候,開發(fā)者人員們就可以從遠程參倉庫拉取到遠端的項目代碼了
cd Developer 開發(fā)者文件夾
git clone ShareServer

進入到開發(fā)者目錄,將遠程倉庫克隆到開發(fā)者本地一份
克隆完成后,開發(fā)者的目錄下,也會有一個遠程倉庫

至此、創(chuàng)建共享代碼倉庫完成?。。?/p>
下面我們開始進行增刪改、回滾的操作
修改
修改步驟如下,結(jié)果如下:
在xcode工程中修改一處地方
git status
git add .
git commit -m "注釋"
git status
git log
git push

此時,我們已經(jīng)將修改的代碼提交到了遠程倉庫。
下面項目經(jīng)理對遠程倉庫進行拉取,獲取開發(fā)者修改的代碼
cd Manner文件夾
git pull
然后打開項目經(jīng)理目錄下的代碼工程,發(fā)現(xiàn)是開發(fā)者修改的最新代碼。
修改完成?。?!
增加
增加代碼的步驟,和上面的都一樣,不在寫了,看下圖

執(zhí)行完上圖操作,已經(jīng)項目經(jīng)理已經(jīng)增加完成,此時開發(fā)者需要拉取最新代碼

執(zhí)行完,會發(fā)現(xiàn)開發(fā)者的目錄下的工程已經(jīng)添加了shopModel類了
增加完成?。?!
刪除
開發(fā)者從本地刪除掉shopModel類,然后執(zhí)行下面的步驟,將修改后的工程,提交到遠程倉庫,項目經(jīng)理就可以從遠程倉庫拉取到刪除后的最新代碼。
git status
git add .
git commit -m "刪除"
git status
git log
git push
回滾
剛才我們刪除了shopModel類,下面我們再講shopModel類回滾回來
git reflog
git reset --hard 唯一標示

回滾完成!?。?/p>
幾個常用的指令
$ pwd 查看當前目錄
$ git push -u origin master -f 使用強制push的方法