xcode git版本控制工具的使用

關(guān)于版本控制

什么是“版本控制”殉农?我為什么要關(guān)心它呢?想象這么一個(gè)場(chǎng)景蟀淮,三個(gè)人同時(shí)開(kāi)發(fā)一個(gè)項(xiàng)目最住,每個(gè)人都有自己的代碼庫(kù),每個(gè)人在自己的mac上進(jìn)行代碼開(kāi)發(fā)工作怠惶。如果三個(gè)人的分工特別明確還好涨缚,各自負(fù)責(zé)各自的模塊兒,最終合代碼時(shí)以其中一個(gè)人為主導(dǎo)策治,把其他兩個(gè)人的修改的模塊兒直接替換脓魏。但是如果分工比較混亂,存在兩個(gè)甚至三個(gè)人同時(shí)修改一個(gè)文件的時(shí)候通惫,不必多說(shuō)茂翔,必然亂成一鍋粥了。其實(shí)履腋,版本控制遠(yuǎn)遠(yuǎn)不止合代碼這么簡(jiǎn)單珊燎。 版本控制是一種記錄一個(gè)或若干文件內(nèi)容變化,以便將來(lái)查閱特定版本修訂情況的系統(tǒng)遵湖。 有了它你就可以將某個(gè)文件回溯到之前的狀態(tài)悔政,甚至將整個(gè)項(xiàng)目都回退到過(guò)去某個(gè)時(shí)間點(diǎn)的狀態(tài),你可以比較文件的變化細(xì)節(jié)延旧,查出最后是誰(shuí)修改了哪個(gè)地方谋国,從而找出導(dǎo)致怪異問(wèn)題出現(xiàn)的原因,又是誰(shuí)在何時(shí)報(bào)告了某個(gè)功能缺陷等等迁沫。 使用版本控制系統(tǒng)通常還意味著芦瘾,就算你亂來(lái)一氣把整個(gè)項(xiàng)目中的文件改的改刪的刪,你也照樣可以輕松恢復(fù)到原先的樣子集畅。之前一直使用svn做版本控制旅急,現(xiàn)在逐步轉(zhuǎn)入git, 不能說(shuō)誰(shuí)好誰(shuí)壞,只能說(shuō)各有千秋

XCode初始化本地項(xiàng)目庫(kù)(公司服務(wù)器)

xcode對(duì)于git的支持還是很強(qiáng)大的牡整。一些基本的操作慷蠕,例如push, pull ,commit ,merge,新建刪除分支等都可以通過(guò)圖形界面直接完成浅役。省去了在命令框的很多操作旁蔼。

1覆获, 添加遠(yuǎn)程庫(kù)到xcode

依次點(diǎn)擊 Xcode -> Preferences -> Accounts . 彈出框左下角點(diǎn)擊+號(hào)渔彰。選擇 Add Repostory...

點(diǎn)擊增加倉(cāng)庫(kù).jpeg

出現(xiàn)了倉(cāng)庫(kù)配置界面----->>>>

增加倉(cāng)庫(kù)的配置項(xiàng).png

Address : 填寫(xiě)github上項(xiàng)目的網(wǎng)址或者公司自己的git 服務(wù)器上項(xiàng)目的地址欧芽。具體如下症脂,打開(kāi)github, 選擇自己所要添加的項(xiàng)目织鲸。點(diǎn)擊復(fù)制網(wǎng)址句占。粘貼到地址項(xiàng)沪摄。注意:如果是公司內(nèi)部自己的git lab 需要把 http://myserver /項(xiàng)目名 中的 myserver 更改為內(nèi)網(wǎng)的git項(xiàng)目的IP地址。端口號(hào)也要加入。

Snip20171106_5.png

Autnentication : 驗(yàn)證方式杨拐, 選用 Username And Password
User Name: 你的Github 的用戶(hù)名以及密碼
點(diǎn)擊Add -- > 驗(yàn)證成功后左側(cè)的Repositories 會(huì)多出一個(gè)遠(yuǎn)程倉(cāng)庫(kù)祈餐。這個(gè)時(shí)候就可以從git 服務(wù)器上叉代碼下來(lái)盡情擼了。

2哄陶,從遠(yuǎn)程倉(cāng)庫(kù)拉取代碼

Xcode 中依次點(diǎn)擊 Source Control -> Check out

Snip20171106_6.png

剛才添加的代碼倉(cāng)庫(kù)出現(xiàn)在列表中帆阳。選中點(diǎn)擊Next.


Snip20171106_7.png

選中分支,第一次添加的庫(kù)只有一個(gè)master主分支屋吨。選擇存放的位置蜒谤。然后下載即可。

3至扰,創(chuàng)建分支以及merge

多人開(kāi)發(fā)時(shí)沒(méi)開(kāi)發(fā)一個(gè)功能都自幾拉取一個(gè)分支鳍徽,在自己分支上進(jìn)行開(kāi)發(fā),功能開(kāi)發(fā)結(jié)束后merge 到主分支敢课。依次推進(jìn)阶祭,不至于污染主分支的代碼。

(1)打開(kāi)第二步叉下來(lái)的工程翎猛,查看當(dāng)前分支胖翰,并新建自己的分支:
Snip20171106_9.png

在當(dāng)前在master分支上,通過(guò)New Branch…新建自己的分支(建議分支名以自己名字縮寫(xiě)為開(kāi)頭切厘,這樣便于區(qū)分)

Snip20171106_10.png
(2)點(diǎn)擊Create后萨咳,則在本地新建了“cyb_photopick”分支,并且會(huì)自動(dòng)切換至新分支疫稿。至此我們基于master建好了一個(gè)本地分支培他,但是該分支并未推送到遠(yuǎn)端∫抛可以看到:
Snip20171106_11.png

當(dāng)前遠(yuǎn)端并沒(méi)有我們新建的分支舀凛。
我們可以通過(guò) Source -> Push,將當(dāng)前分支(cyb_photopick)推送到遠(yuǎn)端途蒋。

Push后遠(yuǎn)端有了新建分支.png
(3)提交代碼:接下來(lái)就是進(jìn)行代碼編寫(xiě)猛遍,功能測(cè)試完畢后 Source control -> commit -> Source control -> push
(4)merge代碼:

當(dāng)我們?cè)诒镜刈约悍种贤瓿砷_(kāi)發(fā)之后,需要將代碼與master的進(jìn)行合并号坡。

4.1 首先確保自己分支的代碼已經(jīng)提交并push
4.2 切換到master分支
![Uploading Snip20171106_14_448063.png . . .]

Snip20171106_14.png

點(diǎn)擊switch懊烤。此時(shí)切換為主分支。

4.3 進(jìn)行代碼更新 Source Control -> pull

此時(shí)可能別的成員已經(jīng)對(duì)遠(yuǎn)端對(duì)master分支代碼進(jìn)行了合入宽堆,會(huì)有代碼沖突腌紧,解決沖突后本地master 分支已經(jīng)是最新的代碼

4.4 切回到自己的分支(cyb_photopick),過(guò)程不再贅述, 同4.2切換分支同樣的步驟畜隶。
4.5選擇Merge from Branch…: 把其他分支的代碼合入自己本地分支壁肋。這里就是把主分支的代碼合入到本地分支号胚。merge過(guò)程中可能會(huì)有沖突需要解決。
Snip20171106_15.png
4.6 Merge into Branch... 選擇我們與哪個(gè)分支進(jìn)行合并(這里既master分支)浸遗,此merge過(guò)程可能涉及conflict解決(但是一般都 沒(méi)有conflict了猫胁,因?yàn)樯弦徊揭呀?jīng)解決了),merge完成后乙帮,分支已經(jīng)被自動(dòng)切換到master分支上了杜漠。
4.7 注意以上切換到本地分支之后的所有操作均為本地操作。遠(yuǎn)端倉(cāng)庫(kù)并不知道這些merge的存在察净。所以還需要再進(jìn)行依次push操作驾茴。push結(jié)束后如果這個(gè)功能分支就可以刪除后重建分支開(kāi)發(fā)其他功能了。

四氢卡,git tag功能

4.1锈至、列出標(biāo)簽

$ git tag # 在控制臺(tái)打印出當(dāng)前倉(cāng)庫(kù)的所有標(biāo)簽

$ git tag -l ‘v0.1.*’ # 搜索符合模式的標(biāo)簽

4 .2、打標(biāo)簽

git標(biāo)簽分為兩種類(lèi)型:輕量標(biāo)簽和附注標(biāo)簽译秦。輕量標(biāo)簽是指向提交對(duì)象的引用,附注標(biāo)簽則是倉(cāng)庫(kù)中的一個(gè)獨(dú)立對(duì)象筑悴。建議使用附注標(biāo)簽。

4.2.1 輕量標(biāo)簽

$ git tag v0.1.2-light

4.2.1 附注標(biāo)簽

$ git tag -a v0.1.2 -m “0.1.2版本”

創(chuàng)建輕量標(biāo)簽不需要傳遞參數(shù)砚婆,直接指定標(biāo)簽名稱(chēng)即可。

創(chuàng)建附注標(biāo)簽時(shí)突勇,參數(shù)a即annotated的縮寫(xiě)装盯,指定標(biāo)簽類(lèi)型甲馋,后附標(biāo)簽名。參數(shù)m指定標(biāo)簽說(shuō)明定躏,說(shuō)明信息會(huì)保存在標(biāo)簽對(duì)象中账磺。

4.3 補(bǔ)打標(biāo)簽

$ git tag -a v0.1.1 9fbc3d0
打標(biāo)簽不必要在head之上,也可在之前的版本上打痊远,這需要知道歷史某個(gè)提交(通過(guò)git log獲劝笠ァ)拗引。

4.4 切換到標(biāo)簽

與切換分支命令相同幌衣,用git checkout [tagname]
先列出所有標(biāo)簽
$ git tag

4.5 刪除標(biāo)簽

誤打或需要修改標(biāo)簽時(shí)壤玫,需要先將標(biāo)簽刪除哼凯,再打新標(biāo)簽。
$ git tag -d v0.1.2 # 刪除標(biāo)簽
參數(shù)d即delete的縮寫(xiě)猎贴,意為刪除其后指定的標(biāo)簽蝴光。
給指定的commit打標(biāo)簽
打標(biāo)簽不必要在head之上,也可在之前的版本上打趁耗,這需要你知道某個(gè)提交對(duì)象的校驗(yàn)和(通過(guò)git log獲冉椤)。

4.6 標(biāo)簽發(fā)布

git push不會(huì)將標(biāo)簽對(duì)象提交到git服務(wù)器径簿,我們需要進(jìn)行顯式的操作:
$ git push origin v0.1.2 # 將v0.1.2標(biāo)簽提交到git服務(wù)器

$ git push origin –tags # 將本地所有標(biāo)簽一次性提交到git服務(wù)器
再用git show命令可以查看標(biāo)簽的版本信息:
gitshow v0.1.2再切換標(biāo)簽 git checkout v0.1.2

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末篇亭,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子鄙币,更是在濱河造成了極大的恐慌蹂随,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绩衷,死亡現(xiàn)場(chǎng)離奇詭異激率,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)乒躺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門(mén)嘉冒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)咆繁,“玉大人顶籽,你說(shuō)我怎么就攤上這事』滴” “怎么了镊绪?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)帘撰。 經(jīng)常有香客問(wèn)我万皿,道長(zhǎng),這世上最難降的妖魔是什么蹬耘? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任减余,我火速辦了婚禮,結(jié)果婚禮上如筛,老公的妹妹穿的比我還像新娘抒抬。我一直安慰自己,他們只是感情好妖胀,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布惠勒。 她就那樣靜靜地躺著,像睡著了一般涂臣。 火紅的嫁衣襯著肌膚如雪售担。 梳的紋絲不亂的頭發(fā)上闯估,一...
    開(kāi)封第一講書(shū)人閱讀 52,156評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音骑素,去河邊找鬼。 笑死末捣,一個(gè)胖子當(dāng)著我的面吹牛创橄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播妥畏,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼醉蚁,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了黔龟?” 一聲冷哼從身側(cè)響起滥玷,我...
    開(kāi)封第一講書(shū)人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蛋欣,沒(méi)想到半個(gè)月后桨菜,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡泻红,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年谊路,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了菩彬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片潮梯。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡惨恭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出萝究,到底是詐尸還是另有隱情锉罐,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布栽连,位于F島的核電站侨舆,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏噩茄。R本人自食惡果不足惜复颈,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望凿菩。 院中可真熱鬧帜讲,春花似錦、人聲如沸似将。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)腋舌。三九已至,卻和暖如春赞辩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背世落。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工糟需, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓诅诱,卻偏偏與公主長(zhǎng)得像送朱,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子驶沼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359

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