git repository 已经准备好了,但是如果你回到 Xcode,打开 Source Control 菜单,你会发现一切都还是不可用的。
这是因为 Xcode 不会自动被通知到,我们已经手动添加了 git repository。因此,点击菜单 Xcode > Quit Xcode 来关闭 Xcode ,然后再重启。现在,在 NoGitExample 项目中,如果你再打开 Source Control 菜单,你会看到这些的选项都可用了,跟我们创建 project 时就添加了 git repository 的效果相同。
到了这一步,就可以关闭这个 NoGitExample 项目,也可以把它从桌面上删除了。
现在你已经能够知道怎么为一个 project 添加 git repository了。并且即使你在创建 project 时有意或无意没有添加 git repository,也可以随时手动添加。
提交更改
说到所谓的“提交更改到 repository”,我们实际的意思是:存储我们项目的一个新版本。新版本包含目前已作出的所有更改,比如代码修改或者新添加的文件。一般来说,一次提交应该发生在一定量的工作已经完成,并且项目处于稳定状态之时。关于提交的频率应该是多久一次,并没有一定之规,但我建议:如果你认为从上一次提交到现在之间,你所做的工作如果意外丢失,会造成巨大的时间精力浪费,那就一定要提交一下了。
Xcode 默认会在新项目创建时做一次初始提交,目的是保存一个项目初始状态的版本。这次提交是在幕后完成的,不会打扰你,也不会要求你确认。如果你在创建项目时没有添加 git repository,是如前所述在之后手动添加的,初始提交是通过这个指令完成的:git commit -m ‘Initial commit’ 我们之前用过这个指令。
戴仓薯
翻译于 7天前
0人顶
翻译的不错哦!
实际上,你可以看到初始提交的相关信息,只需点击菜单 Source Control > History… 。在这里记录了你对项目的每一次提交。
我们现在来尝试一些操作吧,首先要对项目做点改动。来到 ViewController.m 文件,在 private class 部分添加以下的 property 声明:
1
2
3
4
5
@interface ViewController ()
@property (nonatomic) int sum;
@end
接下来,修改 viewDidLoad 方法如下:
1
2
3
4
5
6
7
8
9
10
11
12
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
int a = 5;
int b = 10;
self.sum = a + b;
NSLog("The result is: %d", self.sum);
}
如果你看一眼 Project Navigator (即左边栏),你会注意到在 ViewController.m 文件后面,多了一个字母 M,如下图所示:
这意味着这个文件已经被修改了,并且相比上次提交的版本确实有改动。一般来说,每次你改动一个文件之后,字母 M 就表示已有改动,还未提交。
戴仓薯
翻译于 7天前
0人顶
翻译的不错哦!
左栏的蓝色区域(图中标识为#3的部分),在右栏变成一条线,这显示了文件中的实际改动。这样的表示法让所有的改动一目了然,并且能对应到改动的具体位置(行号)。也许你注意到了,窗口的中央,在两个预览栏之间,有一些小的圆角标签,上面写着数字(图中标识为#4)。这些标签一个一个地数出了全部的改动,上面的数字就是计数的序号。在数字左边,有一个对勾符号。如果出现了这个对勾,说明对应的改动可以正常提交到 repository。尽管如此,你还是可以选择跳过,暂时不提交文件的某一个或几个改动,甚至抛弃所做的更改,只需点击数字右边的小下三角。含有两个选项的小菜单将会浮现:
如果你选择 Don’t Commit 选项,对勾符号会换成禁止符号,对应的改动就不会提交到 repository 了。
如果你选择菜单中的 Discard Change 选项,会出现一个确认窗口,提醒你选中的改动将会被回滚,并且回滚是无法被撤销的。
如果你点击 OK 按钮,响应区域中的改动会消失无踪,仿佛从没来到世上。
如果你有留心观察上面的提交窗口截图,你会发现所有的修改都会被 Xcode 认为是改动,即使一个空行也不例外。事实上,空行是屏幕上不显示的换行符,所以它被收集为一项改动是合情合理的。
总之,对于这个样例,确保你没有丢弃任何改动,允许一切都提交。因此你应该看到所有的圆角 label 上都有对勾。
在这两栏之下是一片空白区域,中间写着“Enter commit message here”。这个区域用来附加一些简短信息,描述这个版本所做的更改。点击它,填上下图所示的内容:
填写(有意义的)提交信息至关重要,尤其是在提交次数很多的情况下。所以,要把它当做不可或缺的一步。
既然我们已经浏览了一遍这个窗口的主要内容,下面我们来做第一次提交吧。在窗口的右下角,有一个按钮写着:Commit 1 file.
在这个按钮里,总是会写着提交的文件总数。点击它,然后恭喜!你的第一次提交已经诞生,将会永久载入历史,不仅是你个人的历史,也是 git 的历史。这是什么意思呢?只要打开菜单上的 Source Control > History…,就可以看到它列在这里。
如你所见,我们之前写的提交信息以及改动的文件总数都出现在这里了。在 Xcode 做出的初始提交中,提交了所有文件;但是我们只改动了其中一个。
除此之外,如果你关闭 history 窗口,再看看 Project Navigator 左边栏,ViewController.m 文件旁边的 M 字母也消失啦!
现在,我们准备再做一次提交吧。这一次,我们来为项目添加一些新文件,最好的方式莫过于创建一个新类。那么,按下键盘上的 Command + N 键,然后添加一个 Objective-C class。把它设为NSObject 的子类,命名为 TestClass。最后,添加到项目中。
一旦上面这些都完成了,注意左边栏 Project Navigator 中的两个类文件旁边都出现了一个字母 A ;意思是这两个文件是后添加到项目中的,因此自然它们还没有被提交过。
打开 ViewController.h 文件,然后 import 我们的类:
1
#import "TestClass.h"
接下来,打开 ViewController.m 文件,如下声明一个 private 属性���
1
2
3
4
5
6
7
@interface ViewController ()
@property (nonatomic) int sum;
@property (nonatomic, strong) TestClass *testClass;
@end
再看左边栏 Project Navigator,注意到现在有4个没有提交的文件了。两个类文件是我们刚添加的,还有另外两个本来就有的文件。我们需要将这些改动也提交,因此打开 Source Control > Commit… 菜单。
这一次,选中了5个有待提交的文件。第5个文件(显示在第1行)是项目的配置文件,是在添加新类时由 Xcode 自动修改的。如果你点击TestClass.h 或 TestClass.m 文件,左(译者注:原文可能笔误,此处应该为“右”)栏会变为一片空白,如下图所示:
这是因为这两个文件之前没有提交过,因此没有之前的版本可以对比。所以,右栏里只写着“File was added” 就是再正常不过的了。
来到提交信息区域,填写提交信息: TestClass class was added to the project。完成之后,点击 Commit 5 files 按钮,让 Xcode 提交更改到 git repository。
第二次手动提交已经顺利完成了。可以打开提交历史来验证,在菜单Source Control > History… 中:
版本对比在你提交了多个版本之后,对比各个版本、跟踪代码的变化是非常容易的。当新添的代码不能如预期工作时,版本对比显得尤为重要,因为你需要找到从上个稳定版本以来的所有变化。
要比较两个不同版本的文件,或者点击菜单里的View > Version Editor > Show Version Editor,或者点击工具栏上的Version Editor 按钮,如下图所示: