一. 前言
在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管理后, 打開 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...
然后, 就可以正常切換了!!!
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:
選擇 Tag"a720618"... , 在彈出的選項卡內(nèi)填上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賬號, 就會看到剛剛提交的項目:
3.3 Push & Pull
遠程倉庫建立之后, 更改只要執(zhí)行一次Push即可:
與遠程版本同步可執(zhí)行Pull
3.4 從Github克隆(clone)到本地
在Xcode導(dǎo)航欄, 選擇 Source Control -> Clone...
所有你賬號下的項目都會出現(xiàn)在這里, 選擇自己需要的點擊clone:
最后選擇一個保存位置, 即可!!!