git 使用

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ù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末例证,一起剝皮案震驚了整個(gè)濱河市路呜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖胀葱,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件漠秋,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡抵屿,警方通過(guò)查閱死者的電腦和手機(jī)庆锦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)晌该,“玉大人肥荔,你說(shuō)我怎么就攤上這事〕海” “怎么了燕耿?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)姜胖。 經(jīng)常有香客問(wèn)我誉帅,道長(zhǎng),這世上最難降的妖魔是什么右莱? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任蚜锨,我火速辦了婚禮,結(jié)果婚禮上慢蜓,老公的妹妹穿的比我還像新娘亚再。我一直安慰自己,他們只是感情好晨抡,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布氛悬。 她就那樣靜靜地躺著,像睡著了一般耘柱。 火紅的嫁衣襯著肌膚如雪如捅。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,370評(píng)論 1 302
  • 那天调煎,我揣著相機(jī)與錄音镜遣,去河邊找鬼。 笑死士袄,一個(gè)胖子當(dāng)著我的面吹牛悲关,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播娄柳,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼坚洽,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了西土?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤鞍盗,失蹤者是張志新(化名)和其女友劉穎需了,沒(méi)想到半個(gè)月后跳昼,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡肋乍,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年鹅颊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片墓造。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡堪伍,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出觅闽,到底是詐尸還是另有隱情帝雇,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布蛉拙,位于F島的核電站尸闸,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏孕锄。R本人自食惡果不足惜吮廉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望畸肆。 院中可真熱鬧宦芦,春花似錦、人聲如沸轴脐。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)豁辉。三九已至令野,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間徽级,已是汗流浹背气破。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留餐抢,地道東北人现使。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像旷痕,于是被迫代替她去往敵國(guó)和親碳锈。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 聲明:這篇文章來(lái)源于廖雪峰老師的官方網(wǎng)站欺抗,我僅僅是作為學(xué)習(xí)之用 Git簡(jiǎn)介 Git是什么售碳? Git是目前世界上最先...
    橫渡閱讀 3,955評(píng)論 3 27
  • 原文地址主要用到的命令: git config user.name 設(shè)置用戶(hù)名 git config user....
    AFinalStone閱讀 468評(píng)論 0 2
  • 這是我在學(xué)習(xí)Git的過(guò)程中所做的讀書(shū)筆記的相關(guān)總結(jié),希望能對(duì)剛剛接觸Git或Github的小伙伴們帶來(lái)一點(diǎn)點(diǎn)幫助,...
    sonack閱讀 2,497評(píng)論 9 56
  • 親愛(ài)的女兒: 此刻贸人,你應(yīng)該正走在去學(xué)校的路上间景,或者已經(jīng)跟你的姚媽媽一起討論問(wèn)題了。今天是五一艺智,你本可以在家...
    心若紅蓮閱讀 923評(píng)論 0 3
  • 熱共同投入就要放空間
    nicole1202閱讀 193評(píng)論 0 1