Git是一款免費(fèi)、開(kāi)源的分布式版本控制系統(tǒng),用于敏捷高效地處理任何或小或大的項(xiàng)目。和Git類似的代碼管理工具還有SVN,Git和SVN一個(gè)是分布式代碼管理工具一個(gè)是集中式代碼管理工具。
-
關(guān)于git的存儲(chǔ)結(jié)構(gòu):工作區(qū)、暫緩區(qū),Head指針。如下圖所示
git.png 我們新建的文件會(huì)在工作區(qū),在通過(guò) git add . 命令可以把工作區(qū)的內(nèi)容提交到暫緩區(qū),在通過(guò)git commit -m "這里寫(xiě)注釋" 提交到本地代碼倉(cāng)庫(kù)
注意:當(dāng)輸入git status 時(shí):
紅色代表在工作區(qū),需要使用git add . 加入到暫緩區(qū)才能commit
綠色代表在暫緩區(qū),可直接commit
兩個(gè)使用commit都是提交到本地倉(cāng)庫(kù)。
-
下面我們創(chuàng)建一個(gè)本地代碼倉(cāng)庫(kù)
- 1 打開(kāi)終端,進(jìn)入到桌面,這樣子比較好看。
cd Desktop/

- 2 新建一個(gè)倉(cāng)庫(kù)
在桌面創(chuàng)建一個(gè)文件夾
mdkir share
cd share
git init

- 3到這里我們倉(cāng)庫(kù)就創(chuàng)建好了
進(jìn)入文件夾你會(huì)看到

- 4 我們開(kāi)始新建文件
touch main.c

-
5 我們打開(kāi)main.c,并且寫(xiě)入一些文字。
5.png
> - 6 這里我們輸入git status 查看當(dāng)前的文件的狀態(tài)

這里文件在工作區(qū),所以我們要先使用
git add .
git status 查看狀態(tài)

- 7 發(fā)現(xiàn)文件已經(jīng)是綠色,表示在暫緩區(qū),可以提交了
git commit -m "提交了第一次"

- 8 查看版本信息
git log

- 9 上面完成了對(duì)代碼的提交,現(xiàn)在我們隊(duì)代碼進(jìn)行修改

- 10 修改之后繼續(xù)執(zhí)行 6 - 8 ,如圖
11.png
在項(xiàng)目中的提交修改我們已經(jīng)演示,下面演示刪除
- 一、 刪除
有兩種方式:- 1 右鍵→移到廢紙簍
這種方式需要注意的是,不會(huì)給你添加到暫緩區(qū),
你需要自己執(zhí)行 git add . 加入到暫緩區(qū),可以使用git status 自行查看狀態(tài)
- 2 git rm 文件名
這里我們演示直接使用命令刪除的方式
12.png
- 二、執(zhí)行commit 提交
git commit -m "刪除了main.c"

在項(xiàng)目中的刪除我們已經(jīng)演示,下面演示回滾
剛才我們知道了使用 git log可以查看版本信息,但是還沒(méi)有解釋版本
信息中的意思:
commit ....... 后面顯示的是唯一標(biāo)識(shí)符 SHA1生成
author:作者,也就是用戶
date:時(shí)間
描述

我們版本回滾就需要知道commit 后面的唯一標(biāo)識(shí)符
比如我們要回到指定版本

這個(gè)版本
- 1 得到版本信息,輸入
git log
- 2 復(fù)制
commit后面的唯一標(biāo)識(shí)符的前面 七 位
git reset --hard 8e25ca8

- 3 此時(shí)你就會(huì)神奇的發(fā)現(xiàn)你的倉(cāng)庫(kù)已經(jīng)回到了第一個(gè)版本,并且
main.c也回來(lái)了

- 4 剛才我們通過(guò)git log的命令可以查看版本信息,
然后需要手動(dòng)的去復(fù)制commit后SHA1碼的前7位,
很有可能會(huì)復(fù)制錯(cuò)誤,那么我們還可以輸入
git reflog 查看版本

使用這個(gè)查看,可以直接復(fù)制前面的7位標(biāo)識(shí)符,是不是很方便啊。
到這里個(gè)人項(xiàng)目的創(chuàng)建,修改,刪除,提交,回滾都完成了。
對(duì)于團(tuán)隊(duì)項(xiàng)目,除了上面的基本操作意外,還多了:
git init --bare 創(chuàng)建一個(gè)共享倉(cāng)庫(kù)
git clone 克隆
git push 提交到遠(yuǎn)程倉(cāng)庫(kù)
git pull 從遠(yuǎn)程倉(cāng)庫(kù)下載
其他的類似。
好吧,開(kāi)始干活。
1.創(chuàng)建一個(gè)共享倉(cāng)庫(kù)
cd Desktop
mkdir gongxiang
cd gongxiang
git init --bare 創(chuàng)建一個(gè)共享倉(cāng)庫(kù)

2.把代碼倉(cāng)庫(kù)下載到一個(gè)文件夾中
這里我們假設(shè)有兩個(gè)人開(kāi)發(fā),兩個(gè)人的一個(gè)叫“kenghuo”,一個(gè)叫“kengbi”
然后在桌面分別建立這兩個(gè)文件夾,這里坑貨是項(xiàng)目經(jīng)理,他負(fù)責(zé)初始化項(xiàng)目結(jié)構(gòu)。
- 2.1
kenghuo要負(fù)責(zé)項(xiàng)目結(jié)構(gòu)搭建,所以要把代碼倉(cāng)庫(kù)下載回來(lái)
cd ~
cd Desktop/
kenghuo
git clone 共享文件夾的地址

警告是說(shuō)這個(gè)是空的倉(cāng)庫(kù),不用管它
PS: 下面的圖39 33 29的紅色部分的字,是因?yàn)?gitignore引起,所以你需要重github中去搜索gitignore 進(jìn)入找到 Objective-c的下載或者復(fù)制一份自己存儲(chǔ)為.gitignore文件 作者這里的圖就不在去重新生成了=。= 太懶了 有問(wèn)題可以評(píng)論,我看到回復(fù)你。
3.初始化工程,并且上傳到遠(yuǎn)程倉(cāng)庫(kù)
小伙伴們不知道有沒(méi)有注意,我在第一張圖中還有一個(gè)文件貌似一直都沒(méi)有出現(xiàn)過(guò)啊=。=
- 3.1 忽略文件的創(chuàng)建和上傳(Push)
沒(méi)錯(cuò)就是 .gitignore 這個(gè)是忽略文件的意思。
在實(shí)際項(xiàng)目中我們經(jīng)常要忽略一些文件
比如:
.DS_Store
/Pods
podfile.lock
Podfile.lock
這些文件要怎么忽略呢,就需要這個(gè)文件了
你可以去Github中去輸入 gitignore 里面找到Objective-c,復(fù)制一份
你可以把這些添加進(jìn)去,第一個(gè)最好添加,后面的如果你用cocoapods也可以加入進(jìn)去
.DS_Store
/Pods
podfile.lock
Podfile.lock
然后保存為
kenghuo/gongxiang 文件夾

把文件名改為 .gitignore 提示你是不是要使用 . ,點(diǎn)擊確定就好得到下圖

這個(gè)時(shí)候如果你不在kenghuo/gongxiang 文件夾中,就進(jìn)入
如果你不知道你在不在這個(gè)文件夾中 輸入 pwd
進(jìn)入這個(gè)文件夾之后
輸入 git status
如果你的和我一樣,那么你將看到

臥槽,怎么多了一個(gè) .rtf,別急有辦法。

然后

提示是不是要 移除 的時(shí)候,點(diǎn)擊移除
在使用 git status 查看狀態(tài)

- ok這樣子就是我們需要的文件了,但是是 紅色 的啊。
沒(méi)錯(cuò)
git add .
git commit -m "添加忽略文件"
git push

做完上面的事情,我們就可以開(kāi)始創(chuàng)建工程了
-
3.2 創(chuàng)建XCode工程
我覺(jué)得怎么創(chuàng)建xcode工程就不用介紹了,這里只要把工程路徑放到kenghuo/gongxiang/目錄中就好了

這個(gè)時(shí)候我們?cè)倏串?dāng)前的工程在不在暫緩區(qū),因?yàn)椴辉跁壕徣ノ覀兪遣荒芴峤坏?/p>
git status

哇塞,都是綠色,那么就可以提交了,紅色的那個(gè)是不用提交的文件不管他
git commit -m "初始化工程完成"

到這里我們就完成了項(xiàng)目的初始化。
你以為這樣子完成了,(⊙v⊙)嗯,沒(méi)錯(cuò)你本地倉(cāng)庫(kù)里確實(shí)已經(jīng)初始化完成了,但是遠(yuǎn)程倉(cāng)庫(kù)并沒(méi)有,因?yàn)閜ush命令才是把本地倉(cāng)庫(kù)提交到遠(yuǎn)程倉(cāng)庫(kù),這個(gè)時(shí)候如果你不提交 kengbi 是pull不到你的代碼的.所以我們這里還有一步
- 3.3 push到遠(yuǎn)程倉(cāng)庫(kù)
git push

4.kengbi 怎么去拉代碼
進(jìn)入kengbi文件夾,把遠(yuǎn)程代碼倉(cāng)庫(kù)拷貝一份就好了
cd ~
cd Desktop/kengbi
cd git clone 遠(yuǎn)程代碼倉(cāng)庫(kù)地址

- OK,到這里我們已經(jīng)完成了創(chuàng)建共享代碼倉(cāng)庫(kù)。
5. 修改,新增,刪除,回滾
-
5.1 修改
現(xiàn)在在kengbi/gongxiang文件夾中已經(jīng)下載好了從遠(yuǎn)程倉(cāng)庫(kù)下載的代碼,這個(gè)時(shí)候kengbi想修改代碼,然后提交到遠(yuǎn)程倉(cāng)庫(kù)。
- 5.1.1 修改文件
打開(kāi)工程,在工程的viewController中輸入
NSLog(@"我是kengbi,你是誰(shuí)?");
-
5.1.2 查看狀態(tài)
git status

發(fā)現(xiàn)是紅色
國(guó)際慣例
git add .
git commit -m "我是坑比,你是誰(shuí)?"

-
5.1.3 提交到遠(yuǎn)程倉(cāng)庫(kù)
git push

這個(gè)時(shí)候kenghuo想拿到修改之后的代碼,只需要pull
進(jìn)入kenghuo/gongxiang 文件夾

打開(kāi)kenghuo/gongxiang里面的工程

-
5.2 新增
在kenghuo/gongxiang的項(xiàng)目中創(chuàng)建一個(gè)Person類
然后push
-
5.2.1 創(chuàng)建Person類
38 5.2.2 查看狀態(tài) git status
git status

綠色 提交
git commit -m "創(chuàng)建person"

- 5.2.3 push
git push

-
5.2.4 pull
在kengbi/gongxiang目錄中
git pull

這里就會(huì)有了

-
5.3 刪除
- 5.3.1 我們?cè)?kenghuo中刪除Person.h然后push
- 5.3.2 刪除Person.h
這個(gè)沒(méi)必要截圖了
- 5.3.3 git status 如果你是使用Xcode刪除,會(huì)自己添加進(jìn)入暫緩區(qū),如果不在
git add . → git commit -m "刪除Person.h"


-
5.3.4 git push
46.png -
5.3.5 kengbi 去 git pull
47.png
48.png
-
5.4 回滾
5.4.1 剛才我們把Person.h給刪除掉了,現(xiàn)在我們把它給還原
-
5.4.2 在kenghuo/gongxiang中查看版本信息
49 -
5.4.3 回滾到指定版本
50.png
查看Xcode

- 5.4.4 git push

- 5.4.5 git pull
kengbi 去pull

6. 到這里就完成了個(gè)人項(xiàng)目和團(tuán)隊(duì)項(xiàng)目的創(chuàng)建和基本使用。
-
6.1當(dāng)然還有一個(gè)操作方式?jīng)]講,這個(gè)操作方式是基于Xcode的,在Xcode中創(chuàng)建文件、刪除文件、修改文件都會(huì)自動(dòng)幫你添加到暫緩區(qū),這個(gè)時(shí)候我們只需要
54.png
commit 提交
push 推送到遠(yuǎn)程倉(cāng)庫(kù)
pull 從遠(yuǎn)程倉(cāng)庫(kù)下載代碼
對(duì)于commit

- 6.2 回滾,Xcode也集成了

一共提供了三種方式:
-
第一個(gè)比對(duì):
如圖
57.png
. 左邊是你目前的版本,右邊是歷史版本,移動(dòng)左邊的版本可回退到指定的歷史版本

-
第二個(gè):列表的形式顯示
59.png
-
第三個(gè):log日志的形式
60.png 碼字賊累,碼了好久了=。=,如果對(duì)你要幫助,那就行了?。。?!













