git 使用
字?jǐn)?shù)2987 閱讀44 評(píng)論0 喜歡1
前言:
1.文中的"$"不納入命令行中忿晕,只做標(biāo)記用
2.文中會(huì)介紹常用的命令行操作方式和xcode界面化操作方式介紹git
3.以下均個(gè)人理解整理县好,如果有錯(cuò)還請(qǐng)指出
4.如果想了解SVN版本控制的朋友妈拌,請(qǐng)移步SVN使用
git工作原理
工作區(qū)(Working Directory):倉(cāng)庫(kù)文件夾里除.git目錄以外的內(nèi)容
版本庫(kù)(Repository):.git目錄叫挟,用于存儲(chǔ)記錄版本信息
暫緩區(qū)(stage):也叫暫存區(qū)
分支(master):.git自動(dòng)創(chuàng)建的第一個(gè)分支
HEAD指針:用于指向當(dāng)前分支
git add和git commit原理
git add:把文件修改或者新添加文件添加到暫緩區(qū)(暫存區(qū))
git commit:把暫緩區(qū)(暫存區(qū))中的所有內(nèi)容提交到當(dāng)前分支
git大概運(yùn)作流程.gif
什么是分支?
git可以創(chuàng)建無(wú)數(shù)個(gè)分支题禀,且在創(chuàng)建一個(gè)git倉(cāng)庫(kù)的的同時(shí)會(huì)自動(dòng)創(chuàng)建第一個(gè)分支
分支的作用:舉個(gè)例子 —> 一個(gè)已經(jīng)上架的項(xiàng)目竭沫,發(fā)現(xiàn)有重要Bug,為了不影響主分支的開(kāi)發(fā)進(jìn)度关噪,一般會(huì)開(kāi)個(gè)分支出來(lái)專(zhuān)門(mén)修復(fù)Bug用鸟蟹,等到Bug修復(fù)后,再與主分支進(jìn)行合并操作
HEAD頭指針運(yùn)作原理
HEAD指針就是為了在各個(gè)分支間進(jìn)行切換使兔,我們開(kāi)發(fā)哪個(gè)分支建钥,它就會(huì)指向哪個(gè)分支
git中HEAD原理.gif
git初始化和訪問(wèn)配置(命令行方式)
初始化一個(gè)本地版本庫(kù)
$ git init
設(shè)置用戶(hù)名和郵箱
$ git config user.name "用戶(hù)名"
$ git config user.email "xxxxxx@qq.com"
設(shè)置全局用戶(hù)名和郵箱(優(yōu)先級(jí)較高,如果同時(shí)設(shè)置虐沥,優(yōu)先使用全局)
$ git config --global user.name "用戶(hù)名"
$ git config --global user.email "xxxxxx@qq.com"
git倉(cāng)庫(kù)項(xiàng)目初始化操作
在git工作區(qū)(同級(jí)目錄和同級(jí)目錄的子目錄)中創(chuàng)建一個(gè)文件 main.m
$ touch main.m
查看文件狀態(tài)(查看文件是否被管理)
$ git status
說(shuō)明:
1.如果文件的顏色為紅色熊经,說(shuō)明該文件并沒(méi)有被添加到git的暫緩區(qū)中
2.如果文件顏色為綠色,說(shuō)明該文件已經(jīng)被添加到git的暫緩區(qū)中
添加文件到暫緩區(qū)中欲险,查看文件狀態(tài)
$ git add main.m
提交到本地版本庫(kù)中
$ git commit -m "創(chuàng)建了main.m文件" main.m
說(shuō)明:
1.可以直接在后面跟上文件镐依,表示把該文件提交到本地版本庫(kù)(暫緩區(qū)-->版本庫(kù))
2.不跟任何文件名稱(chēng),表示把當(dāng)前所有暫緩區(qū)中的內(nèi)容都提交到版本庫(kù)中
修改文件天试,重新提交更改到本地版本庫(kù)(git中如果修改了文件馋吗,需要重新將文件添加到暫緩區(qū)中才能提交)
$ git add main.m
$ git commit -m "修改了main文件" main.m
注意:在git中和svn不一樣的地方在于 —— 不管是創(chuàng)建文件還是修改文件都需要添加到暫緩區(qū)中然后再提交
git好用的功能 —— 起別名
我們來(lái)給status起別名 st
基本方式:(只能在當(dāng)前文件夾內(nèi)的git工作區(qū)內(nèi)使用)
$ git config alias.st "status"
這樣以后要查詢(xún)文件狀態(tài)就可以直接使用 $ git st 就可以了
高級(jí)方式:(只能在當(dāng)前文件夾內(nèi)的git工作區(qū)內(nèi)使用)
$ git commit -m "注釋" --> $ git config alias.ci "git commit -m"
這樣以后要提交文件就可以直接使用$ git ci "注釋"
全局別名:(設(shè)置一次,電腦中所有的地方都可以使用)
$ git config --global alias.st "status"
git刪除文件
先創(chuàng)建一個(gè)新的文件
$ touch test.m
將文件提交到暫緩區(qū)中
$ git add test.m
提交刪除操作到本地版本庫(kù)
$ git commit -m "刪除了test.m"文件
刪除test.m文件
$ git rm test.m
查看git版本信息
查看git歷史版本信息
基礎(chǔ)方式:
$ git log
高級(jí)方式:(可查看版本回退操作)
$ git reflog
因?yàn)間it是分布式版本控制秋秤,有多個(gè)git本地版本庫(kù),為了使版本號(hào)之間不互相沖突脚翘,所以git版本號(hào)是通過(guò)SHA1加密得到的密文灼卢。
git分布式版本控制示意圖.png
版本回退操作
情況一:修改了本地版本庫(kù)文件,但還未提交
$ git reset --hard HEAD
情況二:修改了本地版本庫(kù)文件来农,且已經(jīng)提交
回退到上一個(gè)版本
方法一: $ git reset --hard HEAD^ // 一個(gè)“^”號(hào)表示一個(gè)版本
方法二: $ git reset --hard HEAD~1 // ~號(hào)后面表示回退幾個(gè)版本(如10就是回退10個(gè)版本)
回退到指定版本
$ git reflog // 查看回退版本信息
$ git reset --hard 版本號(hào)(5位)
創(chuàng)建共享版本庫(kù)并初始化項(xiàng)目
創(chuàng)建共享版本庫(kù)方式
自己搭建服務(wù)器鞋真,自己在服務(wù)器上配置(復(fù)雜)
在U旁上創(chuàng)建共享版本庫(kù)
把共享版本庫(kù)創(chuàng)建到文件夾中
托管到github、oschina網(wǎng)站
創(chuàng)建共享版本庫(kù)步驟
初始化一個(gè)空的git共享版本庫(kù)(和本地版本庫(kù)不同的是沃于,共享版本庫(kù)不會(huì)生成.git文件夾)
$ git init --bare
注:怎么查看使用的版本庫(kù)是共享版本庫(kù)還是本地版本庫(kù)涩咖,我們可以打開(kāi)git 中的config配置文件查看里面的“bare”字段海诲,如果現(xiàn)實(shí)為true表示為共享版本庫(kù),反之不是檩互。
管理者連接倉(cāng)庫(kù)并下載倉(cāng)庫(kù)到本地
$ git clone 共享版本庫(kù)路徑
初識(shí)化項(xiàng)目
在初始化項(xiàng)目前特幔,我們需要先忽略一些不必要的文件
創(chuàng)建一個(gè)忽略文件.gitignore夾
$ cd git工作區(qū)路徑
$ touch .gitignore
到github上搜索gitignore并拷貝Objective-OC文件中的內(nèi)容到我自己創(chuàng)建的忽略文件內(nèi)保存(文件中里面包含了我們需要忽略的文件配置)
添加并提交忽略文件到本地版本庫(kù)
$git add .gitignore
$ git commit -m "新建.gitignore忽略文件" .gitignore
創(chuàng)建我們的XCode工程
項(xiàng)目保存路徑選擇我們本地的版本庫(kù)(這是下面的git選項(xiàng)就會(huì)變灰不可點(diǎn)擊,這是正常的闸昨,因?yàn)槲覀儺?dāng)前的目錄下就有了git倉(cāng)庫(kù))
提交到本地版本庫(kù):創(chuàng)建完成后點(diǎn)擊XCode上面的Source Control --> Commit --> 添加注釋 --> 提交
提交到遠(yuǎn)程版本庫(kù)(共享版本庫(kù)):Source Control --> Push --> 選擇遠(yuǎn)程版本庫(kù) --> Push
XCode使用git(添加第三方框架)
開(kāi)發(fā)中我們或多或少會(huì)使用到第三方框架蚯斯,而我們將框架拖入工程的時(shí)候會(huì)發(fā)現(xiàn)git無(wú)法識(shí)別的情況,這個(gè)原因是因?yàn)槲覀兺先氲氖钦麄€(gè)文件夾饵较,如果我們直接拖入的文件不是包含在文件夾下拍嵌,那么就可以識(shí)別
git中第三方框架(靜態(tài)庫(kù))的處理方式
方式一:直接創(chuàng)建和框架相對(duì)應(yīng)的文件夾,然后將框架文件夾內(nèi)的文件拖入到工程中
方式二:直接右擊需要添加的文件 --> source control --> add
方式三:點(diǎn)擊需要添加文件所屬的文件夾 --> Source Control --> Add "xxxx"
方式四(命令行):
$ cd 文件所在路徑
$ git add .
XCode回退操作
在XCode中循诉,我們要進(jìn)行回退操作很簡(jiǎn)單:Source Control --> Discard All Changes(取消所有的更改)就可以了
XCode多人開(kāi)發(fā)沖突解決
在多人開(kāi)發(fā)中横辆,很容易出現(xiàn)版本之間的沖突問(wèn)題,一般我們都是先提交代碼到本地倉(cāng)庫(kù)茄猫,然后一段時(shí)間提交一次到遠(yuǎn)程版本庫(kù)中狈蚤,這段時(shí)間可能別的開(kāi)發(fā)者已經(jīng)提交過(guò)文件,并且修改了和你同一文件的同一行募疮,那么此時(shí)要提交就會(huì)報(bào)錯(cuò)
處理方式:
Source Control --> Pull --> 選擇修改樣式 —-> 確定
Source Control --> push --> 提交
創(chuàng)建新成員的共享版本庫(kù)
有時(shí)候開(kāi)發(fā)過(guò)程中會(huì)出現(xiàn)新的團(tuán)隊(duì)成員炫惩,而考慮到新成員和老成員使用git方式不一樣或者不熟悉,為了保證代碼的安全性阿浓,會(huì)新建一個(gè)專(zhuān)門(mén)給新成員的共享版本庫(kù)他嚷,以供觀察
創(chuàng)建新成員共享版本庫(kù)(步驟)
在遠(yuǎn)程共享版本庫(kù)中新建一個(gè)新成員文件夾
打開(kāi)遠(yuǎn)程共享版本庫(kù)
$ cd 遠(yuǎn)程共享版本庫(kù)中新成員文件夾的路徑
初始化新的共享版本庫(kù)
$ git init --bare
為確保拷貝到新成員共享版本庫(kù)中的工程為最新版芭毙,操作之前先pull一次工程
Source Control --> 鼠標(biāo)移至工程分支選項(xiàng) --> 選擇彈出菜單中的Configure ... --> 在彈出窗口中選擇 --> Remotes(遠(yuǎn)程) --> 點(diǎn)擊左下角"+" --> Add Remote... --> name:分支標(biāo)記 Address:需要添加的倉(cāng)庫(kù)地址 --> Done --> Source Control --> Push --> 選擇新成員分支 --> push
到此筋蓖,新成員拿到倉(cāng)庫(kù)地址
$ cd 本地倉(cāng)庫(kù)路徑
下載遠(yuǎn)程倉(cāng)庫(kù)中的工程
$ git clone 遠(yuǎn)程倉(cāng)庫(kù)路徑
如果要檢查新成員的工作成果,那么也需要下載新人共享版本庫(kù)的工程
先在本地創(chuàng)建一個(gè)存儲(chǔ)目錄
然后打開(kāi)該目錄
$ cd 本地存儲(chǔ)目錄路徑
下載工程
$ git clone 新人共享版本庫(kù)的路徑
查看提交日志
Source Control --> History...
在日志中可以點(diǎn)擊對(duì)應(yīng)日志中右邊的 show 查看修改的情況
將工程托管到github或osChina平臺(tái)
github篇:
使用github有個(gè)比較不好的地方 -- 要想免費(fèi)必須開(kāi)源退敦,如果不開(kāi)源只能付費(fèi)使用
肯定要有賬號(hào)(步驟就不演示了)
創(chuàng)建遠(yuǎn)程git版本庫(kù)
點(diǎn)擊右上角 “+” 號(hào) --> New repository
repository name(一般為項(xiàng)目名稱(chēng)) --> Description(項(xiàng)目描述) --> 開(kāi)源選擇“Public”(免費(fèi))不開(kāi)源選擇"Private"(收費(fèi)粘咖,7美元/1個(gè)月) --> 選擇是否生成README說(shuō)明文檔 --> 忽略文件選擇(選擇Objective-OC)--> 選擇協(xié)議(一般選擇 Apache License 2.0協(xié)議)--> 創(chuàng)建
連接遠(yuǎn)程版本庫(kù)配置
打開(kāi)XCode --> XCode --> Preferences --> Accounts --> 左下角 “+” --> Add Repository... --> Address:遠(yuǎn)程版本庫(kù)的HTTPS地址 Type:管理工具類(lèi)型 Authentication:認(rèn)證方式 User Name:用戶(hù)名 Password:密碼 --> Add
連接遠(yuǎn)程版本庫(kù)
Source Control --> Chack Out --> 在彈出的窗口中找到我們需要的版本庫(kù)并選擇 --> Next --> 在彈出窗口中選擇需要存儲(chǔ)的位置
創(chuàng)建工程:將項(xiàng)目添加到版本庫(kù)的目錄下 --> Source Control --> Commit --> 提交
將本地版本庫(kù)的工程提交到遠(yuǎn)程版本庫(kù):Source Control --> Push --> 提交
oschina篇:這邊就不寫(xiě)了,因?yàn)閛schina可以看成是github的中文版侈百,排版和操作都差不多瓮下,但是他比較好的一點(diǎn)就是全免費(fèi),而且服務(wù)器在國(guó)內(nèi)钝域,速度比較穩(wěn)定且快讽坏,所以推薦使用。
刪除代碼倉(cāng)庫(kù)
登錄github --> 找到倉(cāng)庫(kù) --> Settings --> 最下面有個(gè)Delete this repository -- 輸入需要?jiǎng)h除的倉(cāng)庫(kù)名 -- 提交
將舊項(xiàng)目添加到git版本庫(kù)中
創(chuàng)建遠(yuǎn)程倉(cāng)庫(kù)
配置遠(yuǎn)程倉(cāng)庫(kù)并連接
使用命令行將文件加入到管理列表中
$ git add .
提交代碼到本地版本庫(kù)
$ git commit -m "注釋"
提交代碼到遠(yuǎn)程版本庫(kù)