[Git] Xcode9 版本控制管理Git<圖文教程>

一. 前言

在Xcode9中重新定義了其自帶的Git, 使版本管理更加的方便:
在左側(cè)資源導(dǎo)航區(qū)塊, 多了個 Source Control navigator 選項, 用于本地的Git倉庫管理;

如果沒有添加Git倉庫, 這里是沒有東西的:


二. 本地項目版本控制

2.1 添加Git管理

2.1.1 方式一

對項目添加Git管理支持, 可以在新建項目最后一步選擇保存位置的時候勾選Create Git respository on my Mac 選項:

2.1.2 方式二

也可以通過終端對現(xiàn)有項目來添加倉庫:

如果本地沒有安裝Git, 可參考 [Command Line]使用Command Line(終端)提交代碼到遠程庫 如何添加Git.

通過 cd 指令, 進入到文件的根目錄:

cd /Users/mac/Desktop/WKWebTest

然后通過 git init 指令來初始化一個Git本地倉庫:

git init

然后通過 git add 指令, 添加文件到本地倉庫:

git add .

最后的 點(.) 意思是將所有的文件都添加到Git倉庫;

最后通過 git commit 指令提交:

 git commit -m "提交"

后面是添加提交說明;
這樣就建立了一個本地倉庫:


2.1.3 方式三

也是最簡單的方式:
在Xcode菜單欄: Source Control -> Create Git Repositories...

新建Git倉庫

一般使用第一種來為新的項目添加Git管理, 使用第三種對已有項目添加Git管理.

添加Git管理后, 打開 Source Control navigator 會看到三個文件夾:

Branches : 所有分支
Tags : 所有標(biāo)簽
Remotes : 遠程倉庫

開始只有Branches文件夾下有一個主分支(master), 其他兩個文件夾都是空的;

2.2 Commit 提交更改

接下來, 我們修改一下代碼, 這里我在ViewController類里面打印了一句話, 并新加了一個People類:


這時, 會看到文件導(dǎo)航欄中, 文件名稱后面有點小小的變化:

M : 修改的文件, 未提交, 這里是ViewController.swift文件
A : 新加的文件, 未添加到Git管理; 這里是People.swift文件

然后點擊導(dǎo)航 Source Control -> Commit...

在彈出的頁面中, 可以看到所做的更改:

最左邊是變動的文件列表, 中間部分的左半邊是文件變動之后, 右邊邊是文件變動之前, 下面的空白區(qū)域是填寫提交的變更信息;

如果有多處變更, 我們不想一同提交, 可在最左側(cè)選擇要提交的文件, 同一文件里不同的代碼選擇可以在中間部分選擇:

這里可以選擇不提交, 或者取消更改;

然后點擊Commit 3Files 即可!
提交成功后, 會看到主分支多了一個版本記錄:

2.3 分支(Branch)管理

2.3.1 新建分支

在需要新建分支的分支上右鍵(開始是在master主分支上) -> Branch from ""...

然后填寫分支名稱即可!, 這里我起的名稱是 "第一個分支"

由上圖可知, 新建了一個分支, 并且當(dāng)前分支切換到新建的這個分支上面來了, 注意分支名稱后面的 current , 代表當(dāng)前所處的分支! 這里所處的分支即為: 第一個分支!
此時提交的更改就會提交到這個分支上面

2.3.2 切換分支

分支間切換, 可在需要切換的分支上右鍵 -> Checkout
如下圖所示, 當(dāng)前分支是在 "第二個分支", 下面我切換到主分支(master)


選中master分支 -> 右鍵選擇Checkout

會彈出是否切換的提示框, 選擇 Checkout 即可!

如果在切換時, 彈出下面的提示:


這是因為, 當(dāng)前所處的分支上有更改還未提交, 需要先提交了, 才能切換, 只需要 Source Control -> Commit..., 提交一下, 就能正常切換了. 如果當(dāng)前的更改不需要提交, 或者不打算要的更改, 可以放棄當(dāng)前的更改: Source Control -> Discard All Changes...

放棄(discard)更改

然后, 就可以正常切換了!!!

2.3.3 合并分支

分支的合并只能是各子分支與主分支之間進行!
將分支合并到另一個分支上, 只需要在需要合并的分支上右鍵 -> 選擇 Merge "分支名稱" into "另一個分支名稱"

例如這里將"第二個分支" , 合并到 "主分支" :

合并分支

也可以選擇 "Merge 'master' into '第二個分支'..." 來將主分支的一些更改合并到"第二個分支" 上來!

2.3.4 刪除分支

在新建的子分支上(主分支master是不能刪除的)右鍵, 可以選擇刪除該分支:

刪除分支
2.3.5 合并分支沖突解決

在合并分支的時候, 難免會有沖突, 如果發(fā)生沖突, 會顯示如下圖所示的頁面:


沖突

左側(cè)是文件列表, 有沖突的文件旁邊會有個紅色的C, 中間部分是具體的沖突內(nèi)容, 左側(cè)為本地版本, 右側(cè)為合并過來的分支版本, 帶問號的需要你選擇使用本地版本還是使用合并過來的, 選中某個沖突(帶問號的哪一行, 如圖中紅色背景部分), 這時, 最下面中間部分有四個選項, 第一第四個都是保留兩個版本, 第二個是使用本地版本(即左側(cè)), 第三個是保留合并而來的分支版本(右側(cè)), 這時做個選擇即可, 圖中4/4, 是共有幾處沖突, 當(dāng)前處在第幾個沖突; 而且此時的Merge按鈕是不可點擊的, 當(dāng)所有的沖突解決之后, 該按鈕即變?yōu)榭牲c擊狀態(tài).

2.4 添加Tag

如果我們想對一些提交或者分支, 添加一些標(biāo)記, 可以使用Tag:
在想要添加tag的commit或者分支上右鍵:
在提交(Commit)記錄上添加Tag:

在提交(Commit)記錄上添加Tag

選擇 Tag"a720618"... , 在彈出的選項卡內(nèi)填上tag名稱和說明:

新建Tag

這時, 提交的版本旁便有了一個tag標(biāo)簽:


左側(cè)Tags文件夾內(nèi), 就多了一個Tag記錄.

也可以在分支上添加Tag, 方法是一樣的, 在要添加tag的分支上右鍵 -> 選擇 Tag "第二個分支"...

在所選的tag上右鍵, 可以選擇刪除/添加新的tag或者分支等操作!!!

2.5 更改管理

2.5.1 取消更改

如果我們做的更改, 不想提交, 可在 Source Control 中選擇放棄某個文件的更改: Discard Changes in "文件名稱"...
或者選擇放棄所有的更改: Discard All Changes...

也可以在提交界面進行舍棄(Discard):

注意: 這里的取消, 會刪除這些文件, 或者這些的更改的代碼!!!

如果僅僅只是不想提交, 但是還想保留這些更改的代碼, 可以在提交界面進行選擇不提交:

2.5.2 恢復(fù)到某次提交

如果想要將代碼退回到某個版本, 只需要在要退回的版本右鍵 -> Checkout "***"... 即可將代碼恢復(fù)到某此提交的版本:


2.5.3 多個版本比較

如果想查看某個文件的更改記錄, 什么時間增加了什么內(nèi)容, 可以選擇這個文件, 然后打開Show the Version editor, 即下面這個反方向的雙箭頭:

例如, 這里查看People類的相關(guān)更改:


左半邊是現(xiàn)在最新的內(nèi)容, 右半邊是某個提交版本的內(nèi)容, 具體哪個版本的提交, 可以在下面進行選擇, 即右下角的那里!

Log

也可以查看所有的Log: 點擊 Show the Version editor 右下的倒三角, 選擇 Log :

這時屏幕中間部分的右半邊會顯示Log信息:

點擊, Show modified files 會顯示兩個版本的具體不同部分, 界面和上面類似!

Blame

同樣在Show the Version editor 可打開Blame頁面, 這里可以查看, 誰在什么時候做了哪些更改, 可用于責(zé)任定位:

當(dāng)鼠標(biāo)放到右側(cè)各行時, 會有一個更多信息的符號i 點擊后打開是這樣的:

Show modified files 和 Open in Comparison 都是可以點擊查看具體的更改內(nèi)容的!!!

2.6 忽略配置文件.ignore

Git 提供了一個機制去忽略這些文件:這類文件后綴名為 .gitignore 。
這個文件不需要我們手動去寫, 可以按如下方法下載:
打開終端輸入:

git config --global alias.ignore '!gi() { curl -L -s https://www.gitignore.io/api/$@ ;}; gi'

這樣對于任何使用 Git 的工程坎炼,只需要輸入以下命令行(如果是OC項目鲸阔,將下面代碼的swift 替換為 Objective-C )就可以下載一個.ignore文件:
首先cd到文件根目錄:

cd /Users/mac/Desktop/GitTest

然后接著輸入以下指令:

git ignore swift,macos >.gitignore
git add .gitignore
git commit -m "Add .gitignore file"

這時, 再去查看項目文件夾, 會發(fā)現(xiàn)多了一個.ignore文件, 當(dāng)然這個文件是隱藏的, 也可看不到:


三. 遠程項目版本控制

3.1 綁定Github賬號

新版的Xcode9 與Github深度整合, 現(xiàn)在可以在Xcode -> Preferences 中添加Github賬號, 點擊左下角的 "+" 在彈出的列表中選擇 Github :

然后輸入賬號和密碼, 即可!!!

3.2 將項目上傳到Github

現(xiàn)在將項目上傳到Github的時候, 只需要在Source Control navigator頁面操作即可, 選擇項目文件夾(藍色那個) -> 右鍵 -> Create "GitTest" Remote on Github...

其中 GitTest 為項目名稱;

然后在彈出的頁面中填寫相關(guān)的信息:

主要是選擇賬號, 項目名稱, 說明等, 點擊 Create 即可!

PS: 如果這里一直創(chuàng)建失敗, 可能是遠程倉庫名稱沖突了, 換個名稱提交即可!

完成后來到你的Github賬號, 就會看到剛剛提交的項目:

屏幕快照 2017-12-06 上午11.02.22.png

3.3 Push & Pull

遠程倉庫建立之后, 更改只要執(zhí)行一次Push即可:

與遠程版本同步可執(zhí)行Pull

3.4 從Github克隆(clone)到本地

在Xcode導(dǎo)航欄, 選擇 Source Control -> Clone...

屏幕快照 2017-12-05 上午11.25.06.png

所有你賬號下的項目都會出現(xiàn)在這里, 選擇自己需要的點擊clone:


屏幕快照 2017-12-05 上午11.24.56.png

最后選擇一個保存位置, 即可!!!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末观游,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子踪宠,更是在濱河造成了極大的恐慌确憨,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件陵吸,死亡現(xiàn)場離奇詭異,居然都是意外死亡介牙,警方通過查閱死者的電腦和手機壮虫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來环础,“玉大人囚似,你說我怎么就攤上這事∠叩茫” “怎么了饶唤?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長贯钩。 經(jīng)常有香客問我募狂,道長,這世上最難降的妖魔是什么角雷? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任祸穷,我火速辦了婚禮,結(jié)果婚禮上勺三,老公的妹妹穿的比我還像新娘雷滚。我一直安慰自己,他們只是感情好檩咱,可當(dāng)我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布揭措。 她就那樣靜靜地躺著胯舷,像睡著了一般刻蚯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上桑嘶,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天炊汹,我揣著相機與錄音,去河邊找鬼逃顶。 笑死讨便,一個胖子當(dāng)著我的面吹牛充甚,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播霸褒,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼伴找,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了废菱?” 一聲冷哼從身側(cè)響起技矮,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎殊轴,沒想到半個月后衰倦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡旁理,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年樊零,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片孽文。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡驻襟,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出芋哭,到底是詐尸還是另有隱情塑悼,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布楷掉,位于F島的核電站厢蒜,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏烹植。R本人自食惡果不足惜斑鸦,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望草雕。 院中可真熱鬧巷屿,春花似錦、人聲如沸墩虹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽诫钓。三九已至旬昭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間菌湃,已是汗流浹背问拘。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人骤坐。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓绪杏,卻偏偏與公主長得像,于是被迫代替她去往敵國和親纽绍。 傳聞我的和親對象是個殘疾皇子蕾久,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,713評論 2 354

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