![最终产品图片](https://i-blog.csdnimg.cn/blog_migrate/014419e8f00f9fde5adced07f1d653da.png)
苹果的最新IDE版本Xcode 9将于今年9月与iOS 11一起发布。 这是一个巨大的更新! 在即将发布的版本中,Git的源代码管理管理(SCM)爱好者是大赢家。
以前的Xcode版本支持SCM,但从未将其视为一等公民。 与诸如SourceTree之类的专业工具相比,Xcode对Git的支持有很多错误和乏味,这意味着开发人员必须在各种工具之间切换才能执行高级Git存储库管理任务。
所有这些都在Xcode 9中发生了变化。Apple不再将SCM视为次要的,而是选择与GitHub紧密集成,并与GitHub紧密合作以实现Xcode 9。
最终结果是,您现在可以直接从Xcode登录到GitHub帐户,以浏览,导航和克隆GitHub存储库。 您也可以搜索其他存储库,而不必切换到浏览器窗口。 相反,如果在浏览器中打开了GitHub存储库,则可以单击“克隆”按钮,并使Xcode自动克隆并打开项目。
正如苹果所说,“现在对Git的支持是最重要的”,而且苹果推出了新的源代码控制导航器,因此您不必打开一个新窗口即可从视觉上与其他Xcode分离。 开发人员现在可以通过清晰直观的时间线查看分支机构,标签和远程服务器,他们可以更精细地检查提交,并且可以看到更优雅,更有吸引力的更改比较。
本教程的目标
在本教程中,我将向您介绍Xcode 9引入的新SCM功能列表。我们将研究三个主要方面:
- 提交
- 分行
- 标签
假设知识
要继续学习本教程,您应该具有Xcode的先前经验,以及通过Git进行源代码管理的工作知识。
Xcode 9 SCM入门
设置环境
为了利用Xcode的新SCM功能,您将需要:
下载并安装了最新的Xcode构建并拥有当前的GitHub帐户后,即可将GitHub帐户连接到Xcode9。启动Xcode并转到Preferences > Accounts 。 然后,选择左下角的+按钮以添加新帐户。
![从Xcode连接您的GitHub帐户](https://i-blog.csdnimg.cn/blog_migrate/644f44aee9b7792a37988786572a2827.png)
从模式窗口中选择GitHub ,然后输入您的GitHub凭据。 如果您使用的是双重身份验证,则Xcode会提示您输入代码。
![Xcode 9支持两因素身份验证](https://i-blog.csdnimg.cn/blog_migrate/f141ae547f83077e88e63e8af2e21ca3.png)
浏览和搜索GitHub存储库
让我们看看如何直接在Xcode中无缝浏览现有的公共GitHub存储库。 如果尚未显示Xcode欢迎屏幕,请转到“ 窗口” >“ 欢迎使用Xcode” 。
![欢迎使用Xcode 9](https://i-blog.csdnimg.cn/blog_migrate/1a4cbb2daf2f454acd812830b11cf3fa.png)
然后选择“ 克隆现有项目” ,这将显示您当前拥有,正在使用或已加星标的GitHub上的存储库列表。
![在Xcode 9中搜索GitHub项目](https://i-blog.csdnimg.cn/blog_migrate/d49cb32e7642996668320a5451a58751.png)
除了提供的列表之外,您还可以通过名称或输入其GitHub URL搜索公共仓库(或您可以访问的私人仓库)。 对于我们的教程,键入RealmDo并单击Clone ,然后选择一个本地目录以将项目克隆到其中。
![在Xcode 9中签出项目](https://i-blog.csdnimg.cn/blog_migrate/de9161ab6d88b64848122035603a9143.png)
然后它将要求您提供目录以将项目检入到:
![直接从GitHub打开Xcode项目](https://i-blog.csdnimg.cn/blog_migrate/f5147936358177fc6c0b3ab43986c94c.png)
除了从Xcode中提取项目存储库之外,另一个真正的精妙功能是,您可以在浏览器中打开GitHub存储库,然后选择Clone或下载 ,您将看到一个名为Open in Xcode的新按钮。
![Xcode 9中的SCM设置](https://i-blog.csdnimg.cn/blog_migrate/95cb3565fbca2f1a982a0e88a9990e66.png)
没错:如果单击它,它将自动在Xcode中打开要克隆和下载的项目。
回到我们的项目。 由于我们使用CocoaPods来管理依赖关系,因此我们需要跳回命令终端并运行pod install
:
19:06 $ pod install Analyzing dependencies Downloading dependencies Using Realm (2.7.0) Using RealmSwift (2.7.0) Generating Pods project Integrating client project Sending stats Pod installation complete! There is 1 dependency from the Podfile and 2 total pods installed.
现在应该在本地设置我们的项目,并且您的.xcworkspace
应该在Xcode中打开,其中包含项目中的所有文件。
Xcode SCM首选项
通过导航到Xcode的首选项,然后选择Source Control ,您可以直接在首选项窗格中更改其行为的各个方面,包括Git作者的姓名和电子邮件,有趣的是,甚至还可以更新.gitignore
设置。
将新项目与GitHub相关联
另一方面,如果您已经创建了一个新的Xcode项目并且尚未在GitHub上创建该项目,则可以直接从Xcode创建一个新的GitHub项目。 右键单击Remotes ,然后在GitHub上选择Create“ RealmDo” Remote 。
![图片:https://cms-assets.tutsplus.com/uploads/users/1802/posts/29336/image/Create_Remote_location.jpg Setting a remote master in Xcode 9](https://i-blog.csdnimg.cn/blog_migrate/499cace8f5ef26de8e1712812cf014a2.png)
然后,Xcode会要求您为存储库命名,并选择一个与其关联的帐户。
![从Xcode 9中创建GitHub存储库](https://i-blog.csdnimg.cn/blog_migrate/931584bdd73647285cf32b1b411df937.png)
探索新的SCM接口
让我们探索新界面的每个部分。
- 左侧窗格具有您熟悉的图标列表,用于访问项目的属性。 第二个选项卡是全新的:它是源代码管理导航器。
- “ 提交历史记录”窗格是导航器中最重要的部分,向您显示了项目和分支的提交历史记录列表。
- 右侧窗格为您提供有关分支和所选提交的更多上下文信息。
- 除了上下文分支和提交信息之外,右侧的此子部分还向您显示哪些文件已成为所选提交的一部分。
- 左侧窗格从SCM角度为您提供了项目的层次结构视图,显示了当前分支,本地或远程的任何其他分支以及标签。 它还会发出信号,指示是否有新的提交要推送或拉出,如您将在后面看到的。
源代码管理导航器
我们将在Xcode 9中探索的第一件事之一是Source Control Navigator,它是Xcode 9的新功能。它不再是源代码视图的第二等公民-它现在已完全融入Xcode。 如上面的屏幕快照中的(1)所示,选择左窗格中的第二个图标,以打开Source Control Navigator。
提交历史
让我们看一下“提交历史”透视图,该视图显示了项目的提交列表,包括提交作者的姓名,日期,描述以及来自GitHub的作者头像,构成了项目历史。
这是一个非常清晰且组织精美的视角。 尽管从历史的角度来看,这个示例项目相当稀疏(尽管我们很快会对此进行更改),但是该窗格具有强大的功能。
除了能够轻松滚动并获取有用的历史信息之外,您还可以直观地按修订,消息或作者进行过滤和搜索。 实际上,您可以链接或加入多个过滤器,不仅可以按作者搜索,还可以按修订版本进行搜索。 您还可以使用范围栏按特定日期段进行搜索,例如最近24小时 , 最近7天或最近30天 。
![过滤Xcode 9中的提交](https://i-blog.csdnimg.cn/blog_migrate/b879e4e6c4f5989b93dc725ad787cc86.png)
选择一个特定的提交会在右侧窗格中弹出一些额外的信息。 除了分支信息之外,您还可以获得提交信息,完整的SHA,作者,消息和日期。 您还将看到在提交期间生成的文件列表,这对于帮助您查明在调试期间导致问题的提交非常有用。
![Xcode 9中的右侧窗格](https://i-blog.csdnimg.cn/blog_migrate/bac5a36d5b1f09459f6207e0c18fff11.png)
双击提交会在左侧窗格中显示该提交中已更改的文件的列表,并且版本比较会在前面和中间显示。 这是熟悉的差异透视图,但是这次有了很大的改进。
![比较提交文件的版本](https://cms-assets.tutsplus.com/uploads/users/1802/posts/29336/image/Diff_versions_Xcode.jpg)
选择右上角的Assistant Editor可以访问非常好的差异视图,它不仅使您可以查看文件的差异,还可以轻松地遍历以前的提交,并查看提交信息以及实际的提交信息。文件更改。
![Xcode 9s新的比较透视图窗格](https://i-blog.csdnimg.cn/blog_migrate/8ca0f612b76752b80ab181f5911f68e5.png)
通过右键单击提交,您还可以看到一个菜单,该菜单可让您联系作者,复制提交信息,从该提交分支,甚至在浏览器中的GitHub上打开该提交。
![提交的上下文菜单](https://i-blog.csdnimg.cn/blog_migrate/071ad118451eb234ef6a163847a4fa42.png)
您还可以创建一个标签,这就是我们要做的。 在第一次提交时选择“ 标记”按钮,并将其命名为release/0.1
。
![创建标签](https://i-blog.csdnimg.cn/blog_migrate/739d453013b37dbf7214b2c11ee5cca8.png)
通过设置父组(发行版,Beta版等)以这种格式命名标签可达到一个有趣的目的,我们很快就会发现。 现在,由于我们已经标记了提交,因此我们将深入探讨下一个主题:分支。
分枝
我们目前在master分支上进行开发,但是在正常的开发流程中,我们通常会在单独的分支上进行工作。 我们将创建一个分支来开发和测试功能,然后在其正常工作时将其合并回master分支。 通过右键单击master并从master选择Branch来创建一个新分支。 调用新分支readme_changes
。
![在Xcode 9中查看分支](https://i-blog.csdnimg.cn/blog_migrate/38a99053965ef773aab2d6a12cc5bfc9.png)
我想演示合并的工作原理,因此在新分支中,让我们通过选择Source Control > Commit提交更改。 这使我们回到比较视图,从而使我们有机会确认我们在此提交中所做的所有更改,并能够逐行比较更改。
检查完更改后,输入类似于以下内容的提交消息。 并确保选中“ 推送到远程”框。
![比较活动提交的更改](https://i-blog.csdnimg.cn/blog_migrate/4e2c1277012c42bc13f5f85a2cb12f77.png)
功能分支完成后,我们希望将其合并回master分支。 右键单击master分支,然后选择第二个合并选项: 从“ readme_changes”合并到“ master” 。
![将提交合并到母版中](https://i-blog.csdnimg.cn/blog_migrate/452138d676122bacf28bddb59c6f5d26.png)
Xcode将合并并自动将您切换回master分支。 切换回master分支,您会注意到当前分支右边带有数字1的向上的小箭头。
![从远程主机提交计数](https://i-blog.csdnimg.cn/blog_migrate/3becef57bbe7b95a487fd5c81fe838e7.png)
这使我们知道我们有一个提交,需要将其推送到远程存储库。 如果计数是2 ,那么我们将比远程主机多两次提交。
相反,如果母版中有尚未更新的新更新,则Xcode会通知您。 Xcode将从远程获取,并用向下箭头通知您,并计数您在远程主服务器后面。
标记
早些时候,我们在一个较早的提交中创建了一个标签。 观察主窗格,可以看到已被标记的另一个提交。 左侧窗格可轻松查看分支下方所有标签的简要列表。
记住我们用于标记release/0.1
的命名约定。 我们这样做是有原因的。 创建带有父级的标签允许Xcode将标签分组在一起。
![在Xcode 9中将标签分组在一起](https://i-blog.csdnimg.cn/blog_migrate/efaf3dcc25049613c2fec512b00fe713.png)
在我们的例子中,我们有两个属于release
父标签的标签。 我们可以出于不同的原因为标签创建多个逻辑组,而Xcode使组织标签变得容易。
通过选择特定标签,我们的提交历史记录将仅显示与该标签相关的提交,这意味着我们拥有发行期间引入的所有更改的完整编码清单。 这将帮助我们缩小特定于该版本的任何有问题的代码。
结论
Xcode 9是一个巨大的版本,最大的新功能之一是Apple最终将SCM集成为IDE的一等公民。 这解决了许多开发人员对于Xcode如何管理协作开发和版本控制的长期困扰。
在Xcode 9中,不仅GitHub无缝地融合到了平台中,而且开发人员现在在新的SCM选项卡中获得了漂亮的代码管理界面。 开发人员可以获得有关代码历史记录,提交,合并,标记和分支的权威视图,以及调试和识别已引入错误的提交的高级观点。 Git爱好者和SCM爱好者将非常感谢Apple在IDE内整合真正强大的Git管理工具的倡议。
翻译自: https://code.tutsplus.com/tutorials/whats-new-with-git-support-in-xcode-9--cms-29336