git使用詳解

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工作原理

git主要分為工作區(qū)、暫緩區(qū)、和Head指針。工作流程大概是這樣的:

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

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


image.png
2、增
touch main.c

創(chuàng)建main.c文件成功后,文件夾中會出現(xiàn)main.c文件,然后我們在該文件中可以添加文字

git status

我們在終端執(zhí)行g(shù)it status,會出現(xiàn)如下圖,其中紅色區(qū)域,就代表我們的暫緩區(qū)


image.png

此時我們需要執(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文件"

image.png
查看版本信息
git log
image.png

通過查看log日志,發(fā)現(xiàn)我們已經(jīng)增加完成,log日志包括了日期、作者和注釋

3、修改

在main.c文件中做任意修改,后面的具體操作看下圖,說明修改完成


image.png
4、刪除

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

git rm main.c
image.png
5、回滾

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


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

執(zhí)行過git reset --hard xx,會發(fā)現(xiàn)文件夾中回滾到了你指定回到的節(jié)點。

上面的只是git的創(chuàng)建、增刪改、回滾基本操作,下面我們將進行g(shù)it團隊開發(fā)的操作。

團隊使用git

image.png

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

1、創(chuàng)建共享倉庫
cd 文件夾
git init --bare
image.png
2、項目經(jīng)理將項目搭建,需要從倉庫拉取下來代碼
cd Manner文件夾
git clone ShareServer
image.png

執(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 
image.png

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


image.png
4、創(chuàng)建工程

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


image.png

c、緊接著初始化項目

git commit -m "初始化工程完成"
image.png

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

git push
image.png

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

cd  Developer 開發(fā)者文件夾
git clone ShareServer
image.png

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


image.png

至此、創(chuàng)建共享代碼倉庫完成?。。?/p>

下面我們開始進行增刪改、回滾的操作

修改

修改步驟如下,結(jié)果如下:

在xcode工程中修改一處地方
git status
git add .
git commit -m "注釋"
git status
git log
git push
image.png

此時,我們已經(jīng)將修改的代碼提交到了遠程倉庫。
下面項目經(jīng)理對遠程倉庫進行拉取,獲取開發(fā)者修改的代碼

cd Manner文件夾
git pull

然后打開項目經(jīng)理目錄下的代碼工程,發(fā)現(xiàn)是開發(fā)者修改的最新代碼。
修改完成?。?!

增加

增加代碼的步驟,和上面的都一樣,不在寫了,看下圖


image.png

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


image.png

執(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 唯一標示
image.png

回滾完成!?。?/p>

幾個常用的指令

$ pwd 查看當前目錄

$ git push -u origin master -f 使用強制push的方法

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容