Git在iOS开发中的使用

原文出自标哥的技术博客:http://www.henishuo.com/git-use-inwork/



请阅读原文!!!

Git在iOS开发中的使用



iOS开发中,很多公司对项目的版本控制管理都使用了git,当然也有部分公司使用的是svn。当年我最初接触的是svn,觉得使用起来挺方便的,但是每次切分支都需要下载一份新的代码起来,这实在太麻烦了,而且公司的网络下载一个项目的所有资源起来也有数百M,这还用工作么?

当年,第一次听说github的时候,就听说是使用git来管理的,可是那时的我感觉好复杂,不知道如何入手。如今,对git的使用可以说是很熟练了,不管是使用命令操作还是直接使用GUI界面工具操作。

就让我带着还不会使用git的同志,跨过那些我曾经走过的坑…

创建新仓库



如果我们在本机上想要创建一个新的git仓库,可以直接使用下面的命令:

git init

还有一种命令可以创建仓库:

git init --bare

我相信大家一定会疑问,这两者有什么区别呢?从字面上看,bare就是赤裸裸的意思,也就是说生成用于记录版本库历史记录的.git目录下面的文件而不会包含实际项目源文件的拷贝。进入版本目录,会发现只有.git目录下的文件。这个版本库里面的文件都是.git目录下面的文件,把原本在.git目录里面的文件放在版本库的根目录下面;换句话说,不使用--bare选项时,会生成.git目录以及其下的版本历史记录文件,这些版本历史记录文件就存放在.git目录下;而使用--bare选项时,不再生成.git目录,而是只生成.git目录下面的版本历史记录文件,这些版本历史记录文件也不再存放在.git目录下面,而是直接存放在版本库的根目录下面。

这么多说明是不是头晕了?我们来来测试一下:

cd Desktop/
mkdir testgit1
cd testgit1
git init
ls
cd .git
ls

这里在桌面创建一个目录叫testgit1,进入到testgit1目录下,然后执行git init来初始化一个仓库。然后,就会生成一个.git目录,然后查看当前目录是否有文件?第一个ls命令是不是什么也没有?是的,默认.git目录是隐藏的。我们进入到.git目录下,查看:

HEAD        config      hooks       objects
branches    description info        refs

下面简单说明一下这几个东东分别干嘛用:

  • HEAD是个头指针,在处理版本切换时,就是这个指针前移、后移等,因此只会生成快照而已,不会重新下载完整的一份代码,所以切换只需要几秒钟就可以在不同的分支上开发了。是不是很方便?
  • config是配置文件,想要看看内部有什么东西,可以直接vi config查看。
  • hooks叫钩子,主要是用于控制commitpush等操作动作,若需要深入了解,可百度,这个东西也是有很深的学问的。
  • objects是存储所有的git对象,关于这个也可以百度阅读相关文章,内容也很多。
  • branches自然是分支的意思,用于管理分支,里面会有所有的分支。
  • description自然是描述信息
  • info这个目录就不清楚具体是干嘛用了
  • refs这个目录有headstags,前者不清楚其用意,后者就是标签,比如我们支持cocoapods的开源库中升级就需要设置tag,对应版本。

git init初始化的版本库,用户可在该目录下执行所有git操作,但别的用户在将push上来的时候容易出现冲突。因此,实际中会将远程服务器端创建一个仓库时,才会使用--bare,而我们个别用户在创建仓库时,不使用--bare

|此处省略…请阅读原文标哥的技术博客

时间: 2024-10-04 06:05:35

Git在iOS开发中的使用的相关文章

iOS开发中的单元测试(二) 让断言活泼起来的匹配引擎

上一篇文章简单介绍了OCUnit和GHUnit两款iOS开发中较为常见的单元测试框架,本文进一步介绍单元测试 中的另一利器--匹配引擎(Matcher Engine).匹配引擎可以替代断言方法,配合单元测试引擎使用,测试 用例可以更多样化,更细致. 传统断言提供的方法数量和功能都有限,以导读中提到的两款框架为例 ,即使是断言相对丰富的GHUnit也只是提供了38种断言方法,范围仅涵盖了逻辑比较,异常和出错等少数几方 面,仍然很单一.而使用匹配引擎代替断言,可能性就大大丰富了,除了普通断言支持的规

iOS开发中常用的数学函数

iOS开发中常用的数学函数   /*---- 常用数学公式 ----*/ //指数运算 3^2 3^3 NSLog(@"结果 %.f", pow(3,2)); //result 9 NSLog(@"结果 %.f", pow(3,3)); //result 27 //开平方运算 NSLog(@"结果 %.f", sqrt(16)); //result 4 NSLog(@"结果 %.f", sqrt(81)); //result

ios开发中uiscrollview里嵌套一个uiscrollview

问题描述 ios开发中uiscrollview里嵌套一个uiscrollview ios开发中uiscrollview里嵌套一个uiscrollview 其中小得scrollview是一个用于放滚动图片的.大得scrollview是用于整个view滚动的..其中还有很多别的view譬如imageview等,现在遇到这样的问题:我滚动大得scrollview,放滚动图片的scroll不跟着动,就一直悬在固定的位置.求解 急呀 解决方案 如果小的uiscrollview是作为subview添加到外部

iOS开发中的单元测试(一) 对比OCUnit和GHUnit

本文不讨论单元测试是什么,或者它之于一个工程的利弊,我认为单元测试是一个开发者保证产出代码质 量的有效工具.本文从使用者的角度对比当下比较流行的两款单元测试框架,给大家提供一些选用建议.如果 你还不甚了解单元测试在工程中所起到的作用,或者还不知道TDD的开发模式,可参考:Test-Driven Development和Unit Testing. 本文对比两个iOS开发中常见的单元测试框架:OCUnit,被官方集成进XCode 4.x版本中:GHUnit,被推荐 最多的测试框架,带GUI界面.初窥

ios开发中时间转换的方法集锦

  这篇文章主要介绍了ios开发中时间转换的方法集锦,需要的朋友可以参考下 在开发iOS程序时,有时候需要将时间格式调整成自己希望的格式,这个时候我们可以用NSDateFormatter类来处理. 例如: //实例化一个NSDateFormatter对象 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; //设定时间格式,这里可以设置成自己需要的格式 [dateFormatter setDateFormat:@"yy

IOS开发中取消文本框输入时的小键盘

  这篇文章主要介绍了IOS开发中取消文本框输入时的小键盘,需要的朋友可以参考下 首先在Interface Builder中选择TextFields,然后在Text Field Attributes中找到Text Input Traits,选择Return Key为done.OK 定义方法 - (IBAction) textFieldDoneEditing:(id)sender; //按下Done键关闭键盘 实现方法 代码如下: //按完Done键以后关闭键盘 - (IBAction) text

ios开发中两个常见问题解决方法

  ios开发中两个常见问题解决方法来啦!大家知道苹果手机使用的是ios系统,而且用户量很庞大,所以ios开发也成了很热门的行业.下文小乐哥给大家带来ios开发中两个常见问题解决方法,希望给技术员在ios开发中起到帮助作用! ios开发中两个常见问题解决方法 一."Unknown class XXViewController in Interface Builder file."问题处理 最近在静态库中写了一个XXViewController类,然后在主工程的xib中,将xib的类指定

ios开发中怎么删除NavigationController?大神救我

问题描述 ios开发中怎么删除NavigationController?大神救我 ios开发中怎么删除NavigationController?大神救我!!!为啥我添加过之后,不知道该怎么删除了,好尴尬 解决方案 NavigationController 是没有没视图的 它只是一个容器 它只有在包装了一个视图控制器,或者是由[ self.navigationController Push]才会显示导航栏 如果不想要它显示 可以在创建根视图的时候不用NavigationController 包装

iOS开发中APP怎么用USB与硬件进行通讯 交互数据 求大神

问题描述 iOS开发中APP怎么用USB与硬件进行通讯 交互数据 求大神 本人最近开发一个iOS项目 其中要求通过USB来访问硬件信息 可有人知道APP通过USB怎么与硬件进行数据交互 看了好多文档依然很不解 求大神 解决方案 http://www.zhihu.com/question/38150683