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

一. 前言

在Xcode9中重新定义了其自带的Git, 使版本管理更加的方便:
在左侧资源导航区块, 多了个 Source Control navigator 选项, 用于本地的Git仓库管理;

如果没有添加Git仓库, 这里是没有东西的:


二. 本地项目版本控制

2.1 添加Git管理

2.1.1 方式一

对项目添加Git管理支持, 可以在新建项目最后一步选择保存位置的时候勾选Create Git respository on my Mac 选项:

2.1.2 方式二

也可以通过终端对现有项目来添加仓库:

如果本地没有安装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 : 所有标签
Remotes : 远程仓库

开始只有Branches文件夹下有一个主分支(master), 其他两个文件夹都是空的;

2.2 Commit 提交更改

接下来, 我们修改一下代码, 这里我在ViewController类里面打印了一句话, 并新加了一个People类:


这时, 会看到文件导航栏中, 文件名称后面有点小小的变化:

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

然后点击导航 Source Control -> Commit...

在弹出的页面中, 可以看到所做的更改:

最左边是变动的文件列表, 中间部分的左半边是文件变动之后, 右边边是文件变动之前, 下面的空白区域是填写提交的变更信息;

如果有多处变更, 我们不想一同提交, 可在最左侧选择要提交的文件, 同一文件里不同的代码选择可以在中间部分选择:

这里可以选择不提交, 或者取消更改;

然后点击Commit 3Files 即可!
提交成功后, 会看到主分支多了一个版本记录:

2.3 分支(Branch)管理

2.3.1 新建分支

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

然后填写分支名称即可!, 这里我起的名称是 "第一个分支"

由上图可知, 新建了一个分支, 并且当前分支切换到新建的这个分支上面来了, 注意分支名称后面的 current , 代表当前所处的分支! 这里所处的分支即为: 第一个分支!
此时提交的更改就会提交到这个分支上面

2.3.2 切换分支

分支间切换, 可在需要切换的分支上右键 -> Checkout
如下图所示, 当前分支是在 "第二个分支", 下面我切换到主分支(master)


选中master分支 -> 右键选择Checkout

会弹出是否切换的提示框, 选择 Checkout 即可!

如果在切换时, 弹出下面的提示:


这是因为, 当前所处的分支上有更改还未提交, 需要先提交了, 才能切换, 只需要 Source Control -> Commit..., 提交一下, 就能正常切换了. 如果当前的更改不需要提交, 或者不打算要的更改, 可以放弃当前的更改: Source Control -> Discard All Changes...

放弃(discard)更改

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

2.3.3 合并分支

分支的合并只能是各子分支与主分支之间进行!
将分支合并到另一个分支上, 只需要在需要合并的分支上右键 -> 选择 Merge "分支名称" into "另一个分支名称"

例如这里将"第二个分支" , 合并到 "主分支" :

合并分支

也可以选择 "Merge 'master' into '第二个分支'..." 来将主分支的一些更改合并到"第二个分支" 上来!

2.3.4 删除分支

在新建的子分支上(主分支master是不能删除的)右键, 可以选择删除该分支:

删除分支
2.3.5 合并分支冲突解决

在合并分支的时候, 难免会有冲突, 如果发生冲突, 会显示如下图所示的页面:


冲突

左侧是文件列表, 有冲突的文件旁边会有个红色的C, 中间部分是具体的冲突内容, 左侧为本地版本, 右侧为合并过来的分支版本, 带问号的需要你选择使用本地版本还是使用合并过来的, 选中某个冲突(带问号的哪一行, 如图中红色背景部分), 这时, 最下面中间部分有四个选项, 第一第四个都是保留两个版本, 第二个是使用本地版本(即左侧), 第三个是保留合并而来的分支版本(右侧), 这时做个选择即可, 图中4/4, 是共有几处冲突, 当前处在第几个冲突; 而且此时的Merge按钮是不可点击的, 当所有的冲突解决之后, 该按钮即变为可点击状态.

2.4 添加Tag

如果我们想对一些提交或者分支, 添加一些标记, 可以使用Tag:
在想要添加tag的commit或者分支上右键:
在提交(Commit)记录上添加Tag:

在提交(Commit)记录上添加Tag

选择 Tag"a720618"... , 在弹出的选项卡内填上tag名称和说明:

新建Tag

这时, 提交的版本旁便有了一个tag标签:


左侧Tags文件夹内, 就多了一个Tag记录.

也可以在分支上添加Tag, 方法是一样的, 在要添加tag的分支上右键 -> 选择 Tag "第二个分支"...

在所选的tag上右键, 可以选择删除/添加新的tag或者分支等操作!!!

2.5 更改管理

2.5.1 取消更改

如果我们做的更改, 不想提交, 可在 Source Control 中选择放弃某个文件的更改: Discard Changes in "文件名称"...
或者选择放弃所有的更改: Discard All Changes...

也可以在提交界面进行舍弃(Discard):

注意: 这里的取消, 会删除这些文件, 或者这些的更改的代码!!!

如果仅仅只是不想提交, 但是还想保留这些更改的代码, 可以在提交界面进行选择不提交:

2.5.2 恢复到某次提交

如果想要将代码退回到某个版本, 只需要在要退回的版本右键 -> Checkout "***"... 即可将代码恢复到某此提交的版本:


2.5.3 多个版本比较

如果想查看某个文件的更改记录, 什么时间增加了什么内容, 可以选择这个文件, 然后打开Show the Version editor, 即下面这个反方向的双箭头:

例如, 这里查看People类的相关更改:


左半边是现在最新的内容, 右半边是某个提交版本的内容, 具体哪个版本的提交, 可以在下面进行选择, 即右下角的那里!

Log

也可以查看所有的Log: 点击 Show the Version editor 右下的倒三角, 选择 Log :

这时屏幕中间部分的右半边会显示Log信息:

点击, Show modified files 会显示两个版本的具体不同部分, 界面和上面类似!

Blame

同样在Show the Version editor 可打开Blame页面, 这里可以查看, 谁在什么时候做了哪些更改, 可用于责任定位:

当鼠标放到右侧各行时, 会有一个更多信息的符号i 点击后打开是这样的:

Show modified files 和 Open in Comparison 都是可以点击查看具体的更改内容的!!!

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"

这时, 再去查看项目文件夹, 会发现多了一个.ignore文件, 当然这个文件是隐藏的, 也可看不到:


三. 远程项目版本控制

3.1 绑定Github账号

新版的Xcode9 与Github深度整合, 现在可以在Xcode -> Preferences 中添加Github账号, 点击左下角的 "+" 在弹出的列表中选择 Github :

然后输入账号和密码, 即可!!!

3.2 将项目上传到Github

现在将项目上传到Github的时候, 只需要在Source Control navigator页面操作即可, 选择项目文件夹(蓝色那个) -> 右键 -> Create "GitTest" Remote on Github...

其中 GitTest 为项目名称;

然后在弹出的页面中填写相关的信息:

主要是选择账号, 项目名称, 说明等, 点击 Create 即可!

PS: 如果这里一直创建失败, 可能是远程仓库名称冲突了, 换个名称提交即可!

完成后来到你的Github账号, 就会看到刚刚提交的项目:

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

3.3 Push & Pull

远程仓库建立之后, 更改只要执行一次Push即可:

与远程版本同步可执行Pull

3.4 从Github克隆(clone)到本地

在Xcode导航栏, 选择 Source Control -> Clone...

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

所有你账号下的项目都会出现在这里, 选择自己需要的点击clone:


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

最后选择一个保存位置, 即可!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,607评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,047评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,496评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,405评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,400评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,479评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,883评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,535评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,743评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,544评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,612评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,309评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,881评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,891评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,136评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,783评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,316评论 2 342

推荐阅读更多精彩内容