2019-01-30

转载自//www.greatytc.com/p/a282489a6cfb

这个我是为了保存.

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

 

流火绯瞳 关注

2017.12.06 11:24* 字数 2603 阅读 5271评论 10喜欢 35

一. 前言

在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 : 远程仓库

need-to-insert-img

开始只有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 即可!

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

need-to-insert-img

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

need-to-insert-img

放弃(discard)更改

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

2.3.3 合并分支

分支的合并只能是各子分支与主分支之间进行!

将分支合并到另一个分支上, 只需要在需要合并的分支上右键 -> 选择 Merge "分支名称" into "另一个分支名称"

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

need-to-insert-img

合并分支

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

2.3.4 删除分支

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

need-to-insert-img

删除分支

2.3.5 合并分支冲突解决

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

need-to-insert-img

冲突

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

need-to-insert-img

2.4 添加Tag

如果我们想对一些提交或者分支, 添加一些标记, 可以使用Tag:

在想要添加tag的commit或者分支上右键:

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

need-to-insert-img

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

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

need-to-insert-img

新建Tag

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

need-to-insert-img

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

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

need-to-insert-img

在所选的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 :

need-to-insert-img

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

need-to-insert-img

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

Blame

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

need-to-insert-img

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

need-to-insert-img

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

2.6 忽略配置文件.ignore

Git 提供了一个机制去忽略这些文件:这类文件后缀名为 .gitignore 。

这个文件不需要我们手动去写, 可以按如下方法下载:

打开终端输入:

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

这样对于任何使用 Git 的工程,只需要输入以下命令行(如果是OC项目,将下面代码的swift 替换为 Objective-C )就可以下载一个.ignore文件:

首先cd到文件根目录:

cd/Users/mac/Desktop/GitTest

然后接着输入以下指令:

gitignoreswift,macos>.gitignoregitadd.gitignoregitcommit-m"Add.gitignorefile"

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

need-to-insert-img

三. 远程项目版本控制

3.1 绑定Github账号

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

need-to-insert-img

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

need-to-insert-img

3.2 将项目上传到Github

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

其中 GitTest 为项目名称;

need-to-insert-img

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

need-to-insert-img

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

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

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

need-to-insert-img

屏幕快照 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阅读 216,496评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,407评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,632评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,180评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,198评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,165评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,052评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,910评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,324评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,542评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,711评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,424评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,017评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,668评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,823评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,722评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,611评论 2 353

推荐阅读更多精彩内容

  • Git 基础 基本原理 客户端并不是只提取最新版本的文件快照,而是把代码仓库完整的镜像下来。这样一来,任何一处协同...
    __silhouette阅读 15,880评论 5 147
  • Git 命令行学习笔记 Git 基础 基本原理 客户端并不是只提取最新版本的文件快照,而是把代码仓库完整的镜像下来...
    sunnyghx阅读 3,915评论 0 11
  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 13,656评论 9 163
  • 应用场景 Q1: 需要测试一个功能,前端已经开发完成,后端接口还没有开发完成,但是有接口文档可看,知道接口响应数据...
    Cassie测试路阅读 5,584评论 1 4
  • 我想压力那么大?这是很多男生说的一句话。甚至当他们遇见更好的机会,更优秀的女生时,为了逃避随之而来的压力,往往也会...
    鱼耗子阅读 130评论 0 0