iOS---在Xcode中使用Git进行源码版本控制

在应用程序开发过程当中,很重要的一部分工做就是如何进行源码的版本控制。当代码出现问题时,咱们就须要将代码恢复到原先正常的版本。若是是多我的共同开发一个项目,那么代码的控制就会很是复杂。幸运的是,开发者不须要本身控制这些,由于有专门的软件来负责,叫作版本控制系统。git


版本控制系统,或者说修改控制系统,其实是一种检测源文件的改变并将其保存留做之后参考使用的机制(软件)。此外,它还能记录其余有用信息,好比是哪一个开发者修改了代码,什么时候修改的,修改了哪一部分,以及其余历史信息。版本控制系统能够比较不一样版本代码的不一样,有必要时能恢复整个项目到之前的版本,追踪有害代码从而减小产品的错误。编程

 

经过版本控制系统,开发者能够在一个项目的不一样分支上工做,当项目的各个部分开发完备时,将它们放到一块儿造成最终的版本,这个过程被称为合并。事实上,这种作法再团队和软件公司中至关常见:每一个人负责项目的一部分,最终全部部分被整合到一块儿造成最终产品。app

 

对于我的开发者来讲,版本控制系统并非必需的,可是咱们仍然强烈推荐开发者使用它,由于它可使代码方便的在有错误的版本和能够工做的版本之间转换。事实上,不少开发者历来不使用相似的工具,他们会在项目添加新的功能时手动保存原先的项目。这实际上是一个很很差的习惯,由于版本控制软件能够更好更高效地完成这项任务。编辑器

 

Git是一个常见的版本控制系统,它最开始是由Liunx之父Linus Torvalds开发的,Git使用虚拟目录,又称为repositories,来管理一切事物。Git能够经过命令行调用,也有专门为它设计的桌面应用软件。若是Git对你来讲很陌生,我建议你在网上查看一些它的相关信息。关于Git更深层次的内容都不在本文的讨论范围以内。工具

 

从Xcode5开始引入了使用git的一些新特性。它将git的各项功能整合到一个菜单中,并提供子菜单来进行软件合并的控制。在接下来的阅读中你会发现,使用git来进行版本控制至关的简单快捷。学习

 

咱们接下来的任务就是学习如何在Xcode中使用git,以及Xcode是如何整合Git的各项功能。若是你以为对这些很陌生,我建议你先上网搜索一下相关的内容。在接下来的教程中,我会假定你已经了解了版本控制系统和git是什么,并将注意力集中在Xcode如何管理它上。测试


GIT Demo概述(GIT Demo Overview)ui

与其余教程中的demo app不一样,此次咱们不会去实现一个应用来演示某一项iOS SDK特性,最终咱们也不会产生一个示例产品。实际上,咱们会新建一个demo工程,写几行代码,而后利用这个工程来演示Xcode提供的版本管理功能。换句话说,咱们会集中注意里于IDE上,而不是iOS自己。atom

 

我建议你跟着我一块儿一步一步实现这个实例项目,在相应的地方手动添加代码,不用担忧,代码量不是不少。跟着教程的步骤,咱们将执行多种重复的版本控制相关的操做,而且咱们必须实时看到结果。若是我只是提供了一个具有全部操做的的应用,那么你没法体会到这些改变。spa

 

好了,废话很少说了,让咱们仔细看看使用Xcode进行版本控制的要点吧。

 

建立一个Git源(Creating a Git repository)

每次在Xcode中建立新工程的时候,都会提示开发者是否将项目做为一个本地的git源。在建立工程的最后一步Xcode会有一个复选框,若是选择了它,git源就会被添加到工程目录中。一般这个选项会被忽视,或是被认为是Xcode的另一个没用的功能,尤为是从未用过git的开发者,或是编程新手。

 

打开Xcode,建立一个新的工程。选择iOS区的“Application”,在应用模板页选择“Single View Application”。

选择下一步,在项目名中输入GitDemo,确保下面的Devices菜单选择iPhone,无需iPad或者universal app。

点击下一步,也就是最后一个步骤,在这里先选择一个要保持工程的目录,而后在窗口底部选上Create git repository on (My Mac ):

默认状况下,这个选项是被选上的,若是你不想使用git,你能够取消它,可是我不建议这么作。本教程中,你须要将它勾选上,而后点击建立按钮。

 

建立完项目以后,打开Finder,找到项目存储的目录,在目录中,有一个.git的子目录,时Xcode为存储git源相关数据自动建立的。

若是你看不到.git目录,你须要让隐藏的文件可见。具体作法就是打开一个Terminal窗口,输入如下命令:


对于OS X Mavericks 10.9:

  1. defaults write com.apple.finder AppleShowAllFiles TRUE  

 

对于之前的OS X版本,

  1. efaults write com.apple.Finder AppleShowAllFiles TRUE   

 

为了重启Finder应用,输入

  1. killall Finder  

 

这就是本项目在本地git源保存的位置。实际上,若是你选上了相应的选项,这个目录就会被建立。相应地,在你建立新应用时,.git子目录也会一同被建立。

 

显然使用Xcode建立一个git源绝不费力,然而,若是你在项目建立时未建立git源,以后又想加上这个功能怎么办呢?好吧,其实你能够在任什么时候候为你的项目建立源,可是不是使用Xcode。尽管这种状况不多发生,我仍是会告诉你该怎么作。

 

若是你愿意的话,你能够直接跳到本教程的下一部分。我建议你接着读下去,由于接下来这些信息仍是颇有用的。

 

在进行演示前,你须要首先经过Xcode下载Command Line Tools,由于咱们要在Terminal下操做,而且须要一些额外的工具。若是你尚未下载,那就去Xcode>Preferences…菜单,选择Download选项卡,展开Components区,点击Commond Line Tools右边下载按钮。下载完成后,一个对勾符号会取代下载按钮。


 

如今,为这个例子再建立一个工程,完过后能够删了它。在建立时取消那个建立git源的选项。此次咱们不想让Xcode为咱们准备一个源。把这个工程命名为NoGitExample,保存到桌面,而后你能够跟我接下来输入的命令同样。

 

一切准备稳当后,打开Terminal窗口(若是你以前打开了一个,那就先关掉它再重启,从而使咱们安装的命令行工具生效)。下面切换到新项目的目录:

  1. cd /Users/YOUR-USERNAME/Desktop/NoGitExample  

别忘了在上边命令中设置Mac的用户名,接下来,输入:

  1. git init  

 这会初始化一个空的源,若是你在Finder里面查看或是输入ls命令,你会看到.git子目录已经被建立,很好,接下来输入:

  1. git add .  

这样,当前目录全部的内容就被添加到源里面去了,最后,输入如下命令:

  1. git commit -m 'Initial commit'  

接下来会出现一个本地git源所执行的改变列表,以下图所示:

如今git源就建好了,可是若是你回到Xcode,打开Source Control菜单,你会发现一切仍然是被禁用。

这是由于当咱们使用命令行工具建立git源时,Xcode并未被通知,下面点击Xcode>Quit Xcode,而后从新启动它,在NoGitExample项目中,若是你再次打开Source Control菜单,你会发现全部的选项已经被使能了,就像一开始勾选上建立git源同样。

如今这个项目的使命已经结束,你能够在桌面上删除它。


如今你知道如何为你全部的项目添加git源了,即便你在建立时没有添加,你也能够在之后任什么时候候为它手动添加源。

提交更改(Committing Changes)
提交更改指的是储存一个包含全部更改的新版本。通常来讲,当咱们作了一些有意义的工做,而且项目处于某一个稳定状态时,就能够提交一次更改。然而具体何时提交更改并无硬性的规定。个人建议是:从上次提交更改以后,若是你怕花费大量时间和精力作的新工做被误删很难恢复,你就须要提交更改了。

默认状况下,Xcode在项目建立之初会提交一次更改,这是为了保存项目初始状态。这项工做会在后台完成,不会打扰你或者要求你进行确认。若是你在项目建立时没有添加git源,可是以后你手动添加了,你能够经过咱们先前使用过的命令来进行提交:git commit -m ‘Initial commit’


实际上,你若是去Source Control>History…菜单,你就会看到初次提交更改的记录,之后每次提交更改,都会在这里有所记录。

接下来让咱们小幅修改一下咱们的工程,在ViewController.m文件中,添加如下属性声明:

  1. @interface ViewController ()  
  2.  
  3. @property (nonatomic) int sum;  
  4.  
  5. @end  

接下来,像下面这样修改viewDidLoad方法:

  1. - (void)didReceiveMemoryWarning  
  2. {  
  3.     [super didReceiveMemoryWarning];  
  4.     // Dispose of any resources that can be recreated.  
  5.  
  6.     int a = 5;  
  7.     int b = 10;  
  8.  
  9.     self.sum = a + b;  
  10.  
  11.     NSLog("The result is: %d", self.sum);  
  12. }  

看一下Project navigator面板,你会发如今ViewController.m文件旁边,添加了一个M字母,像下面这样:

这意味着那个文件已经被修改,相比上一次提交更改,文件有所改变。通常来讲,你每次改变文件,都会出现这个M字母,提醒你有未提交的更改。

 

下面看看如何提交更改,其实很是简单,只须要打开Source Control>Commit菜单,下面窗口就会出现:

让咱们一步步看看它告诉咱们了什么。在左边(标1的区域),列出了全部被更改的文件,在这个例子中,只有ViewController.m这个文件被改变,所以列表中只有它被显示。若是你仔细观察,你会发现文件左边有一个选择框,默认状况下是被选中的,若是你取消它,这个文件的更改就不会被提交。

 

在窗口的中间区域,有两个预览窗口,左边那个是文件当前版本,右边是文件上一次提交更改的版本。由于咱们目前只是建立时提交过一次更改,所以右边显示的是文件的初始状态。


左边窗口蓝色区域标出的就是更改的内容,这样的表示让咱们能够清楚地看出全部的修改。若是你仔细看,会发如今两个窗口之间还有一个带数字的小标签,这个数字一一表示了各项更改。在数字旁边,默认状况下有一个小对勾,表示本更改会被提交,若是你点击右边的小箭头,会弹出一个选项菜单,你能够选择不提交这个更改或是忽略它。


 

若是你选择了Don’t Commit这个选项,小对勾就会被一个中止标志取代,这项更改就不会被保存到源中。

 

 

若是你选择了Discard Change这个选项,会弹出一个确认窗口,提示你所作的更改会被恢复,而且没法取消这个操做。

若是你点击了OK按钮,所选区域的改变就会消失,就像他们从未出现过同样。

 

若是你仔细观察上面这个提交窗口,你会看到你所作的全部修改都会被Xcode看作改变,即便是一个空行。实际上空行至关于回车,在屏幕上是不可见的,所以做为改变也是理所固然的。

 

在本例子中,你不用忽略任何修改,而是容许提交全部更改,所以全部的改变标签旁边必须都是小对勾。

 

在两个窗口下面是一个空白的区域,中间显示了提交更改的信息。这个地方能够添加一些关于这次更改的简短描述,点击它,加入以下内容:

书写有意义的提交信息很是有用,尤为是当你频繁提交的时候。所以,把它当作一个必要的步骤。

 

如今这个窗口的基本信息看的差很少了,是时候作咱们第一次的提交了。在这个窗口的右下脚,有一个按钮上面写着:Commit 1 file。

这个按钮会显示须要提交的文件总数。点击它以后你的第一次提交就完成了!打开Source control > History,你会发现它会被显示在列表中。

从上图中能够看出,咱们编写的信息以及更改的文件数量会被显示出来。Xcode执行初始提交,全部文件都会被提交一下,而此次只有咱们修改的那个文件被提交。


另外,关闭历史窗口,看一下Project Navigator,你会发现ViewController.m旁边的M符号已经消失了。


如今,让咱们准备下一次提交。此次,咱们给工程添加一些新的文件。添加文件最好的方式就是建立个新类,所以,按下Command+N组合键,添加一个Objective-C类。让这个类继承NSObject类,取名叫TestClass,而后添加到工程中。


完成以后,注意一下Project Navigator,你会发现两个新的类文件旁边有个A的字母标识,这意味着这些文件已经被添加到项目中,固然,他们尚未被提交。


打开ViewController.h文件,导入咱们的新类:

  1. #import "TestClass.h"  

下一步,打开ViewController.m文件,像下面同样声明一个私有属性:

  1. @interface ViewController ()  
  2.  
  3. @property (nonatomic) int sum;  
  4.  
  5. @property (nonatomic, strong) TestClass *testClass;  
  6.  
  7. @end  

看一下项目导航栏,此次有四个文件有待提交。让咱们打开Source Control > Commit菜单,将它们提交。

须要提交的一共有5个文件。除了以前修改的四个以外,还有一个项目配置文件。Xcode会在新类被添加到项目中以后自动修改这个文件。若是你你打开TestClass.h或TestClass.m文件,左边的窗口没有任何显示,以下图所示。

这是由于在这个文件在以前没有被提交的记录,所以没有一个能够比较的版本,在右边只显示了File was added。


在消息区写上这样一个描述:TestClass was added to project.. 以后点击Commit 5 files按钮便可。


这样第二次手动提交就成功了。你能够到Source Control > History 菜单查看提交的记录。

版本之间的比较(Comparing Versions)
当你提交了同一工程的不一样版本以后,在他们之间比较,追踪修改信息就会很是方便。当新添加的代码不能运行时,这时与之间版本进行比较就很是重要了,你能够看出新版本相比上个稳定版有了哪些更改。

 

要比较同一个文件的两个版本,你可使用View>Version Editor>Show version editor,或是点击工具栏上的Version Editor按钮:

点击以后,编辑器会分为两栏。最初,两栏会显示相同的内容,点击编辑器下面的那个小时钟图标,能够选择以前已经提交的版本进行比较。

点击以后,两个版本的区别会在编辑器中显示出来。一般,左边显示的是当前版本的文件,右边显示的是以前的版本。蓝色高亮的区域显示了被更改的代码,所以比较代码的变化很是容易。继续选择任何此前的版本,并观察两栏的区别。

你可能会注意到,在两个编辑器中间,还有在提交窗口看到的小标签。点击向下的按钮能够跳出让你忽略更改的选项。若是你点击了忽略更改,Xcode会提示你是否赞成。若是你赞成忽略,这些被忽略的代码将会永远消失,没法再找回来。因此要注意不要无心中忽略任何代码。
 

除了上面说到的方法,还有一种你回到以前版本的方法。若是你仔细观察两个编辑器下面的工具栏,在中间有个带箭头的时钟图标:

点击它以后,两个面板之间的纵列内容就发生了改变,变成了一系列表示以前更改的时间戳。注意并非全部的都表明实际提交。表明先前版本的圆角矩形的数量取决于提交的次数。在这个例子中,只有两个这样的图形,表明了两次提交。

在这一列的下面,有两个箭头。左边的那个属于左边的面板,右边的箭头属于右边的面板。将箭头移动到任意以前的版本,你会看到在相应面板中的改变。若是你想比较当前版本和以前任意版本的区别,让一个箭头指向local行,而后移动第二个箭头。时间戳从底部到顶部表明了重新到旧的代码。在base行,你会看到上一次提交的内容。继续向上移动,你会看到最初的提交,以下图所示:

如今你知道如何比较版本之间的区别了。再继续深刻以前,把前面学习的练习一下玩玩吧。


到底是谁的错?(Who’s Got the Blame)
除了比较文件的版本外,Xcode还可让你追踪文件的提交者,以及是谁改变了哪一部分代码。在一个多人的团队中,这很是有用。要使用这个功能,点击View > Version Editor > Show Blame View菜单。或是讲鼠标放在工具栏的Version editor 按钮上,选择Blame选项。一个与上面相似的窗口将会出现:

正如你看到的,当前文件依据不一样的提交被水平线分红几段,每一个代码段的做者,以及提交信息和其余信息显示在窗口右边的一个特殊面板中。

若是你尚未作过,那本身动手打开这个blame视图,注意一下Xcode展示代码段做者的方式。在这个视图中,能够方便地找到某一代码在什么时候被谁提交以及其余你想要的信息。将鼠标放在blame面板上,将会显示修改的一些其余信息。当指针停在提交段上时,一个带图片的小按钮就会出如今它的右边。点击选中该段代码,就会弹出一个附带提交信息窗口。在这个窗口中,你还能够跳转到比较窗口(indication #1),以及特定提交的修改文件(indication #2)。


 

除了比较视图和blame试图,其实还有一个日志视图(Log view)。你能够经过View > Version Editor > Show Log View来打开它。或者若是你在这里就不在详细说它了。你能够本身去看看,毕竟这个用起来也没那么复杂。


分支(Branches)
试想一下,你如今的工程有一个即将发布的版本,或是已经发布的版本,你忽然想添加一些新的特性,如何防止这些新添加的代码让整个项目陷入瘫痪呢?答案很简单:你须要使用分支。


如何简单的理解分支呢?你能够把你的项目想象成一棵树,稳定版本就是树的主干。任何添加新功能的版本都必须是树干的一部分。分支,就像是树的枝干,它从树干生长出来,向不一样的方向生长。在git中,你能够经过建立分支来为你的代码设置一个新的路径来实现新特性,而不用担忧在开发中破坏主干。

 

实际上,在git中默认都会有一个分支,叫作master。Xcode自动执行的第一次提交中就发生在这个分支中。一般,单独的开发者只在master这个分支开发,这其实不是一个好习惯。不管你是单打独斗仍是组团合做,我认为在对项目做出重大改变或添加剧大功能时,使用分支是十分重要的,它会为你避免不少麻烦。固然,在团队项目中,为你本身负责部分的代码搞一个分支几乎是必须的。

关于分支,你必须记住如下两点:
1. 提交到App Store或客户的最终产品必须是项目中的master分支项目。
2. 任何在第二分支中实现的代码或者功能最终都必须合并到master分支,这样正式发布的应用程序才是完整的。(之后再讲这一点)

 

当你开始一个新分支时,你其实是以当前工做状态做为起点,即便你有任何未提交的更改。从这个时候起,全部的改变都会只体如今分支中。

 

如今让咱们回到Xcode,要建立一个分支,点击Source Control > GitDemo-master > New Brance…这个菜单,而后会弹出以下菜单:

为这个分支起一个名字,我就把它起名为AnotherBranch好了。如今你怎么给它起名其实都无所谓。点击OK按钮,等一下新的分支就会被建立,而当前的代码也会复制到新分支中去。

 

打开Source Control菜单,你就能够轻松地找出活动分支是哪个:它就在项目名字的旁边。

如今,让咱们作一次新的分支的提交。在这以前,让咱们添加一些新的代码。打开类文件,在私有属性区添加如下方法声明:

  1. @interface ViewController ()  
  2.  
  3. ...  
  4.  
  5. -(void)sayHello;  
  6.  
  7. @end  

 而后实现它:

  1. -(void)sayHello{  
  2.     NSLog("Hello");  
  3. }  

最后,在viewDidLoad中调用它:

  1. - (void)didReceiveMemoryWarning  
  2. {  
  3.     ...      
  4.  
  5.     [self sayHello];  
  6. }  

如今,点击Source Control > Commit菜单,版本比较窗口将会出现,你会看到只有一个被修改过的文件--ViewController.m文件,新添加的部分会被高亮显示。


输入下一个提交信息:First commit to a new branch,而后点击commit 1 file按钮。如今AnotherBrance分支的改变就会被提交了。

 

打开Version Editor(menu View > Version Editor > Show Version Editor),找到右边编辑面板下面的工具栏,你会看到被选中的分支是AnotherBranch,点击它,你会看到这个分支和master分支同时出现,从master分支中选择任意版本,Xcode都会高亮显示二者之间的区别。经过这样,你能够方便地跟踪全部分支间代码的改变。

最后,切换到另外一个分支,或是master分支,你能够点击Source Control > GitDemo –AnotherBranch > Switch to Branch…菜单。

从这个窗口你能够选择想要跳转的分支,在这里让咱们跳回master分支:

选择它并点击Switch按钮,master分支就会成为固然活动分支。你会发如今AnotherBranch中作出的改变并无出如今master分支。很好,咱们在管理工程推动的同时,却没有修改稳定版本。

 

合并分支(Merging Branches)
在分支中进行开发是一种好习惯,然而,若是代码改变要体如今发行版中,那么分支就必须被合并到master分支中。这一节咱们将会告诉你怎样合并它们。在Xcode里,将两个分支合并成一个很是简单。


让咱们作一个小实验来看看合并是怎样工做的。首先,确保master分支是如今的活动分支。若是不是,赶忙改过来:Source Control > GitDemo – AnotherBranch > Switch To Branch… menu,并从展现窗口选择master分支。

 

下一步,建立一个新的分支:Source Control > GitDemo – master > New Branch… menu,命名为LastBranch

先让Xcode飞一会,而后,到ViewController.m文件中,再建立一个私有方法,首先声明它:

  1. @interface ViewController ()  
  2.  
  3. ...  
  4.  
  5.  
  6. -(void)sayByeBye;  
  7.  
  8. @end  

而后实现它:

  1. -(void)sayByeBye{  
  2.     NSLog("Bye - Bye");  
  3. }  

最后,在ViewDidLoad方法中调用它:

  1. - (void)viewDidLoad  
  2. {  
  3.     ...      
  4.  
  5.     [self sayByeBye];  
  6. }  

在合并以前,先提交这些更改。使用Source Control > Commit菜单来执行提交。

终于仍是来到这一步,关于把两个不一样的分支合并成一个,你有两种选择“
1. 从分支合并:与你选择的分支相关的任何改变都会被合并到如今活动分支中。
2. 合并到分支:当前活动分支的任何改变都会被合并到你选择的分支中。

 

这两种方式你均可以在Source Control > GitDemo 菜单中找到。注意当你的活动分支是master分支时,第二个选项是不可选的。

 

假设一个开发者在Anotherbranch分支实现一个sayHello方法,另一个开发者在LastBranch中建立实现了sayByeBye方法,如今你须要将两我的的工做合并到下一个稳定版本中,想想你须要怎么作?很简单,按如下方法将改变从两个分支中合并进来:

 

首先,确保当前活跃分支是master分支。

 

而后,打开Source Control > GitDemo – master > Merge From Branch…菜单,选择AnotherBranch而后点击Merge按钮。

接下来会出现一个比较窗口,在里面你会看到合并以后代码的更改,看一眼,感受差很少了就再点击Merge按钮。

Xcode会询问你是否保存项目的快照,点击Enable按钮。让Xcode飞一会,而后就好啦。AnotherBranch里面添加的内容已经合并到master分支中。

 

使用一样的方法来合并LastBranch。你会发现若是你不提交更改,Xcode不会让你再次合并。因而,咱们只好先提交一下。在比较窗口你会发现一个红色的区域显示合并以后的更改,而不是以前的蓝色。这意味着分支中的代码将会替换原先活动分支中的代码。

你能够轻松地避免这种现象的发生。在编辑面板的下面有几个小按钮,你能够试试他们都有什么做用,我选了第一个,它的意思是master分支的代码会被放在上面,另外一个分支的代码会跟在它后面。

处理接下来全部须要更改的代码,不要有遗漏。完过后就点击Merge按钮。


恭喜你!你已经成功的学会从多个分支合并了代码,相似的情形你也应该会了。

 

忽略更改(Discarding Changes)
放弃不想要的代码更改功能很是有用,只需轻轻一点,自从上一次提交以后的更改都会被放弃。当你在开发过程当中发现出了大乱子,你想从上一个稳定状态从新开始时,这个功能就派上用场啦。注意放弃更改这个功能没有回头路,点完以后你就没有办法再撤销这个操做,因此,要当心使用啊!

 

以前,当咱们在讨论版本比较时,咱们学会了如何忽略某一部分更改的方法,下面,咱们要学一下如何一下忽略自从上一次提交以后的全部更改。

 

为了测试这个功能,首先写一些代码打开ViewController.h ,添加一个公共方法声明:

  1. @interface ViewController : UIViewController  
  2.  
  3. -(void)aVeryCoolMethod;  
  4.  
  5. @end  

如今,让咱们在ViewController.m中添加一个这个方法的实现,简单点就行:

  1. -(void)aVeryCoolMethod{  
  2.     NSLog("I'm feeling that you'll discard me... Really?");  
  3. }  

若是你注意到Project Navigator,咱们刚刚更改的文件旁边有了一个M标识,很好,咱们想看看若是忽略这些更改,这些文件是否会回到更改以前的状态。

 

这里有一个重要的细节:你能够选择忽略全部文件的更改,也能够选择忽略单个文件的更改,这彻底取决于你。若是你想忽略一个文件的更改,首先选定这个文件。在这个例子里,若是你只选择ViewController.m文件而后打开Source Control菜单,你会在ViewController.m中发现Didcard Changes这个选项。相似的,若是你只选择ViewController.h也是一个道理。然而,若是你想忽视这两个文件的更改(这里假定有两个以上的更改),就在Project Navigator中选中它们,而后再打开Source Control菜单。相应的位置就会显示Discard Changes in 2 Files,像下面这样:

然而,此次咱们不会使用这个按钮,咱们要用Discard All Changes。点击它以后,一个肯定提示框就会出现,这是这部分Xcode防止你误删代码的惟一措施。

点击Discard All Changes, 那你刚才写的那个公共方法就永远属于过去了。看到了吧,只需几步就可让你从当前工做状态恢复到以前的提交,因此我再一次提醒你要在使用Source Control 中当心点,别误点了这个按钮。

 

总结经过这篇教程,我尽力详述了在Xcode中进行版本控制的方法。其实在幕后,真正起做用的是git----地球上应用最多的版本控制系统。你可能注意到我在教程中并无过多的提到GitHub或者任何Xcode的一些功能----其实我是故意这样的。我想把注意力集中在使用Xcode进行git管理的内容上。只有当你懂得了如何进行版本控制以后,才能真正的使用GitHub。我想再重申一下,若是你是一个团队在工做,使用版本控制工具是必须的!若是你是单打独斗,使用版本控制工具也是颇有必要的,它能够为你花大量时间和精力所作的工做提供保障,而且在你添加新功能时可简单地进行扩展。这个工具就像有些人说的那样,一旦用了,就再也回不去了!最后,我但愿这个教程会对你有用。

相关文章
相关标签/搜索