原文:
原文转载:http://blog.csdn.net/eminia/article/details/6639261
Git 和Xcode
单打独斗时,对于版本恢复就值得关注,应该用代码管理系统(SCM)。Git是一个共享的版本控制系统。有完整的历史记录和版本跟踪能力。并非要基于网络或中心服务器。和其他SCM系统相比,简单易用。对于个人开发者尤为适用,比如像我。
我用Xcode开发,是苹果的推荐的开发环境(IDE),但没法适用Xcode的内建SCM函数和Git交互。不过还好,我可以用terminal 终端,输入标准的Git命令行来解决。
要结合Git 和Xcode项目,先得过道坎——Git怎样控制Xcode的生成文件呢?在Git的根目录——之后我不再解释——添加.gitattributes
文件和.gitignore
文件,.gitattributes作用是让
Git能控制Xcode的文件。添加.gitignore
作用是给不需要维持版本的生成文件加上干扰信号。
初始文件.gitattributes
:
把Xcode 文件当做二进制来看。这就阻止Git去修复新加的代码行,而还是显示成不同的,也杜绝了Git对不同文件进行合并 。注意它会显示合并冲突的警告,尽管文件并没有改变。这样配置后,我们只用简单的把事情交给Git,就万事大吉了。
*.pbxproj -crlf -diff -merge
:初始文件
.gitignore
# Xcode 混淆器
# -----------
#
忽略*.xcodeproj 中除了project.pbxproj 之外的其他东西。比如:*.mode1v3,*.mode2v3 (用户特别的项目设置),*.pbxuser,*.perspective, *.perspectivev3, *.xcodeproj/*,
!*.xcodeproj/project.pbxproj
删除NIB文件,变成纯Xcode项目
如果你像我一样,也是旧校区的GUI 黑客,想自己用代码创建UI(译注:其实都这样做)。我想完全控制,还有速度优势(注意生词:speed bumps)——当然也有相反意见,如Matt Gallagher pointed out recently。
1 新建Window-based 项目。
2 删除MainWindow.xib
这个NIB 文件,用代码创建window 。(注意,以后都可以用套句在google搜索:create WHAT programmatically)
3 创建视图控制器MainViewController
,带头文件和实现文件,但不带NIB文件。再用程序把视图加到window上,
ApplicationDelegate
类:
MainViewController类:
4在
删除Main nib 整行。Info.plist
5在
main.m的程序初始函数的参数部分,
加上程序代理的类名。
int retVal = UIApplicationMain(argc, argv, nil, @"ApplicationDelegate");
6因为现在主窗口不是IB创建而是程序创建,所以主程序代理类中的IB输出口就没什么用了。所以我删掉了里面的 IBOutlet window 属性。你可以用
来访问主窗口。[UIApplication sharedApplication].keyWindow;
7
代码变化
因为是分布式的版本控制,所以分布式这一块内容并不是最吸引人的。最有意思的是这套系统不是以版本时间为指导思想,而是以变化时间为指导思想。这种版本控制的做法Joel Spolsky pointed out recently.有详细介绍。因此,我是以周为划分来做版本控制。
第3周的代码变化。
黄色的是标签,头部的是我当前的工作阶段。