在Xcode中使用Git進行源碼版本控制

轉(zhuǎn)發(fā)自:http://www.cocoachina.com/ios/20140524/8536.html

對于個人開發(fā)者來說验庙,版本控制系統(tǒng)并不是必需的,但是我們?nèi)匀粡娏彝扑]開發(fā)者使用它父丰,因為它可以使代碼方便的在有錯誤的版本和可以工作的版本之間轉(zhuǎn)換。事實上,很多開發(fā)者從來不使用類似的工具蛾扇,他們會在項目添加新的功能時手動保存原先的項目攘烛。這其實是一個很不好的習(xí)慣,因為版本控制軟件可以更好更高效地完成這項任務(wù)镀首。

Git是一個常見的版本控制系統(tǒng)坟漱,它最開始是由Liunx之父Linus Torvalds開發(fā)的,git使用虛擬目錄更哄,又稱為repositories芋齿,來管理一切事物。Git可以通過命令行調(diào)用成翩,也有專門為它設(shè)計的桌面應(yīng)用軟件觅捆。如果Git對你來說很陌生,我建議你在網(wǎng)上查看一些它的相關(guān)信息麻敌。關(guān)于Git更深層次的內(nèi)容都不在本文的討論范圍之內(nèi)惠拭。

從Xcode5開始引入了使用git的一些新特性。它將git的各項功能整合到一個菜單中庸论,并提供子菜單來進行軟件合并的控制。在接下來的閱讀中你會發(fā)現(xiàn)棒呛,使用git來進行版本控制相當?shù)暮唵慰旖荨?/p>

創(chuàng)建一個Git源(Creating a Git repository)

1聂示、為新項目創(chuàng)建Git源

每次在Xcode中創(chuàng)建新工程的時候,都會提示開發(fā)者是否將項目作為一個本地的git源簇秒。在創(chuàng)建工程的最后一步Xcode會有一個復(fù)選框鱼喉,如果選擇了它,git源就會被添加到工程目錄中趋观。通常這個選項會被忽視扛禽,或是被認為是Xcode的另外一個沒用的功能,尤其是從未用過git的開發(fā)者皱坛,或是編程新手编曼。

如何為新項目創(chuàng)建Git源:

這步非常關(guān)鍵:默認情況下,這個選項是被選上的剩辟,如果你不想使用git掐场,你可以取消它,但是我不建議這么做贩猎。本教程中熊户,你需要將它勾選上,然后點擊創(chuàng)建按鈕吭服。

查看Git源相關(guān)數(shù)據(jù)

創(chuàng)建完項目之后嚷堡,打開Finder找到項目存儲的目錄,在目錄中有一個.git的子目錄艇棕,是Xcode為存儲git源相關(guān)數(shù)據(jù)自動創(chuàng)建的蝌戒。如果你看不到.git目錄串塑,你需要讓隱藏的文件可見。

顯示隱藏文件

打開一個Terminal窗口瓶颠,輸入以下命令:

defaults writecom.apple.finderAppleShowAllFiles TRUE? (OSX10.9之后)

//defaults writecom.apple.FinderAppleShowAllFiles TRUE? ? (OSX10.9之后)

然后重啟Finder應(yīng)用

killall Finder

2拟赊、為已有項目創(chuàng)建Git源

顯然使用Xcode創(chuàng)建一個git源毫不費力,然而粹淋,如果你在項目創(chuàng)建時未創(chuàng)建git源吸祟,之后又想加上這個功能怎么辦呢?

1)首先通過Xcode下載Command Line Tools桃移。Xcode>Preferences>Download>Components區(qū)屋匕,點擊Commond Line Tools右邊下載按鈕。(如果沒有說明你已經(jīng)下載過了)

2)打開Terminal窗口借杰,依次執(zhí)行如下命令

cd /Users/Mac的用戶名/Desktop/項目名稱? ? ? ? ? ? ? //換到新項目的目錄

git init//初始化一個空的源


git add.//當前目錄所有的內(nèi)容就被添加到源里面

git commit-m'Initial commit'

接下來會出現(xiàn)一個本地git源所執(zhí)行的改變列表过吻,如下圖所示:

3)重啟Xcode

如果你再次打開Source Control菜單,你會發(fā)現(xiàn)所有的選項已經(jīng)可以使用了蔗衡,就像一開始勾選上創(chuàng)建git源一樣纤虽。

提交更改(Committing Changes)

1、提交初始狀態(tài)

默認情況下绞惦,Xcode在項目創(chuàng)建之初會提交一次更改逼纸,這是為了保存項目初始狀態(tài)。如果你在項目創(chuàng)建時沒有添加git源济蝉,但是之后你手動添加了杰刽,你可以通過我們先前使用過的命令來進行提交:git commit -m ‘Initial commit’

2、查看提交記錄

去Source Control>History…菜單王滤,你就會看到初次提交更改的記錄贺嫂,以后每次提交更改,都會在這里有所記錄雁乡。

3第喳、修改代碼

修改了ViewController.m中的代碼,在Project navigator面板ViewController.m文件旁邊會出現(xiàn)了一個M字母踱稍,表示有未提交的更改

4墩弯、如何提交更改?

只需要打開Source Control>Commit菜單寞射,下面窗口就會出現(xiàn)

選擇要提交的被更改文件

標1的區(qū)域:列出了所有被更改的文件渔工。注意:文件前有選擇框,默認情況下是被選中的桥温,如果你取消它引矩,這個文件的更改就不會被提交。

選擇要提交的代碼段

標4的區(qū)域:在數(shù)字旁邊,默認情況下有一個小對勾旺韭,表示本更改會被提交氛谜,如果你點擊右邊的小箭頭,會彈出一個選項菜單区端,你可以選擇不提交這個更改或是忽略它值漫。

選擇了Don’t Commit:表示這項更改就不會提交

選擇了Discard Change:表示所做的更改會被恢復(fù),并且無法取消這個操作织盼。

添加更改的簡短描述

書寫有意義的提交信息非常有用杨何,尤其是當你頻繁提交的時候。因此沥邻,把它當做一個必要的步驟危虱。

版本之間的比較(Comparing Versions)

當你提交了同一工程的不同版本之后,在他們之間比較唐全,追蹤修改信息就會非常方便埃跷。當新添加的代碼不能運行時,這時與之間版本進行比較就非常重要了邮利,你可以看出新版本相比上個穩(wěn)定版有了哪些更改弥雹。

比較同一個文件的兩個版本,使用View>Version Editor>Show version editor

編輯器下面的那個小時鐘圖標延届,可以選擇之前已經(jīng)提交的版本進行比較缅糟。

究竟是誰的錯?(Who’s Got the Blame)

除了比較文件的版本外祷愉,Xcode還可以讓你追蹤文件的提交者,以及是誰改變了哪一部分代碼赦颇。在一個多人的團隊中二鳄,這非常有用。

點擊View > Version Editor > Show Blame View

當前文件依據(jù)不同的提交被水平線分成幾段媒怯,每個代碼段的作者订讼,以及提交信息和其他信息顯示在窗口右邊的一個特殊面板中。

分支(Branches)

試想一下扇苞,你現(xiàn)在的工程有一個即將發(fā)布的版本欺殿,或是已經(jīng)發(fā)布的版本,你突然想添加一些新的特性鳖敷,如何防止這些新添加的代碼讓整個項目陷入癱瘓呢脖苏?答案很簡單:你需要使用分支。

關(guān)于分支定踱,你必須記住以下兩點:

1棍潘、提交到App Store或客戶的最終產(chǎn)品必須是項目中的master分支(主分支)項目。

2、任何在第二分支中實現(xiàn)的代碼或者功能最終都必須合并到master分支亦歉,這樣正式發(fā)布的應(yīng)用程序才是完整的恤浪。(以后再講這一點)

1、創(chuàng)建一個分支

點擊Source Control > GitDemo-master > New Brance

2肴楷、查看活動分支

打開Source Control菜單水由,你就可以輕松地找出活動分支是哪一個:它就在項目名字的旁邊。

3赛蔫、提交分支(與提交更改相同)

4砂客、比較分支

打開Version Editor(menu View > Version Editor > Show Version Editor),找到右邊編輯面板下面的工具欄濒募,你會看到被選中的分支是AnotherBranch鞭盟,點擊它,你會看到這個分支和master分支同時出現(xiàn)瑰剃,從master分支中選擇任意版本齿诉,Xcode都會高亮顯示兩者之間的區(qū)別。通過這樣晌姚,你可以方便地跟蹤所有分支間代碼的改變粤剧。

5、切換分支

切換到另一個分支挥唠,或是master分支抵恋,你可以點擊Source Control > GitDemo –AnotherBranch > Switch to Branch…菜單。

合并分支(Merging Branches)

注意:在合并之前宝磨,先提交更改

合并的方式

關(guān)于把兩個不同的分支合并成一個弧关,你有兩種選擇

1、 從分支合并:與你選擇的分支相關(guān)的任何改變都會被合并到現(xiàn)在活動分支中唤锉。

2世囊、合并到分支:當前活動分支的任何改變都會被合并到你選擇的分支中。

這兩種方式你都可以在Source Control > GitDemo 菜單中找到窿祥。注意:當你的活動分支是master分支時株憾,第二個選項是不可選的。

合并

首先晒衩,確保當前活躍分支是master分支嗤瞎。

然后,打開Source Control > GitDemo – master > Merge From Branch…菜單听系,選擇AnotherBranch然后點擊Merge按鈕贝奇。

完事后就點擊Merge按鈕。

忽略更改(Discarding Changes)


常見問題

xcode提交版本時提示The working copy “MyPro” failed to commit files.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末靠胜,一起剝皮案震驚了整個濱河市弃秆,隨后出現(xiàn)的幾起案子届惋,更是在濱河造成了極大的恐慌,老刑警劉巖菠赚,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件脑豹,死亡現(xiàn)場離奇詭異,居然都是意外死亡衡查,警方通過查閱死者的電腦和手機瘩欺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拌牲,“玉大人俱饿,你說我怎么就攤上這事∷觯” “怎么了拍埠?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長土居。 經(jīng)常有香客問我枣购,道長,這世上最難降的妖魔是什么擦耀? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任棉圈,我火速辦了婚禮,結(jié)果婚禮上眷蜓,老公的妹妹穿的比我還像新娘分瘾。我一直安慰自己,他們只是感情好吁系,可當我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布德召。 她就那樣靜靜地躺著,像睡著了一般汽纤。 火紅的嫁衣襯著肌膚如雪上岗。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天冒版,我揣著相機與錄音,去河邊找鬼逞姿。 笑死辞嗡,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的滞造。 我是一名探鬼主播续室,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼谒养!你這毒婦竟也來了挺狰?” 一聲冷哼從身側(cè)響起明郭,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎丰泊,沒想到半個月后薯定,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡瞳购,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年话侄,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片学赛。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡年堆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出盏浇,到底是詐尸還是另有隱情变丧,我是刑警寧澤,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布绢掰,位于F島的核電站痒蓬,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏曼月。R本人自食惡果不足惜谊却,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望哑芹。 院中可真熱鬧炎辨,春花似錦、人聲如沸聪姿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽末购。三九已至破喻,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間盟榴,已是汗流浹背曹质。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留擎场,地道東北人羽德。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像迅办,于是被迫代替她去往敵國和親宅静。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,592評論 2 353

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