美文网首页征服iOS人猿星球iOS技术收藏
[Git] Xcode9 版本控制管理Git<图文教程&g

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

作者: 流火绯瞳 | 来源:发表于2017-12-06 11:24 被阅读2295次

    一. 前言

    在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

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

    相关文章

      网友评论

      • zaq1125:写得非常好,看懂了
      • Calvin_Shen:写的特别详细,感谢~
      • DeathKira:Very very good ! beyond compared!
      • Z了个Y:将本地项目上传到github时,点击create然后就一直卡在输入账号密码验证这一块,但是我账号密码是没有问题的,作者大大能帮忙分析下是什么原因吗
      • Coder_Melo:写得很好!学习了!
      • LD_左岸:是不是理解为
        用Github协作开发的话就是:
        比如两个人协作开发 A的Xcode里从Github上克隆下来就有master分支
        B的Xcode里从Github上克隆下来就有master分支
        A在A的xcode上创建 A1 .A2 . A3三个分支 此时B的Xcode上是没有A1 .A2 . A3这三个分支的
        B同理
        A写代码的话 就在A1这个分支上写 B 也同理在B1的分支上写 等写好确认没问题之后
        A B在分别把A1 B1分支上的代码合并到主分支Master上
        流火绯瞳:@左岸__ 可以这么理解, 同一项目中, 例如A, 分支上的更改例如A1, 在没有合并到主分支(A)之前, 是不影响主分支的功能的
      • LD_左岸:写的Very Good!

      本文标题:[Git] Xcode9 版本控制管理Git<图文教程&g

      本文链接:https://www.haomeiwen.com/subject/etkcixtx.html