Git是一款免费、开源的分布式版本控制系统,还有一种SVN的开源的集中式版本控制系统.分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。
优点:
适合分布式开发,强调个体。公共服务器压力和数据量都不会太大。速度快、灵活。任意两个开发者之间可以很容易的解决冲突。离线工作。
缺点:不符合常规思维。代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。
简单原理图
开发者A通过add操作添加到暂存区,暂存区提交到本地,再从中央服务器pull操作,将代码拉下来,与A的修改后的代码合并,再push到中央服务器,
需要注意的是如果多个开发者,一定要相互协调,A需要更新中央服务器的内容,B不能做任何操作,等A更新完,B再去pull,切记每次都得先pull再push,而且一旦中央数据更新,除上传者外其他的开发者相应的进行pull与push操作
在http://git.oschina.net/注册项目,组长将组员添加,将生成的HTTPS的网址发送给组员,然后每个人安装SourceTree,通过url创建该项目的Git仓库,即项目文件夹,通过仓库管理
CocoaPods简单操作
CocoaPods是一个用来帮助我们管理第三方依赖库的工具。它可以解决库与库之间的依赖关系,下载库的源代码,同时通过创建一个Xcode的workspace来将这些第三方库和我们的工程连接起来,供我们开发使用。
使用CocoaPods的目的是让我们能自动化的、集中的、直观的管理第三方开源库。
安装CocoaPods 在终端下执行命令 gem source -l如果得到https://rubygems.org,因为Ruby的默认源使用的是cocoapods.org,国内访问这个网址有时候会有问题,我们将它替换成淘宝,先移除 gem source --remove https://rubygems.org,再添加gem source -a https://ruby.taobao.org/,最后在用gem source -l命令检查一下替换成功与否使用sudo获取最高权限,终端输入sudo gem install cocoapods,执行之前输入机器密码,接着等着下载,cocoapods的升级过程也是执行升级命令,但权限一定要相同.
安装过程如果报错,
- /Users/wangzz/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:298:in `to_specs‘: Could not find ‘cocoapods‘ (>= 0) among 6 total gem(s) (Gem::LoadError)
- from /Users/wangzz/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:309:in `to_spec‘
- from /Users/wangzz/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_gem.rb:53:in `gem‘
- from /Users/wangzz/.rvm/rubies/ruby-1.9.3-p448/bin/pod:22:in `<main>‘
这就是路径设置的问题,可以通过执行 rvm use ruby-1.9.3-p448;
使用cocoaPods,通过终端找到工程文件夹路径执行touch Podfile,文件夹生成Podfile文件,点开Podfile,添加需要的第三方库
pod ‘AFNetworking‘
pod ‘SDWebImage‘
pod ‘MBProgressHUD‘
pod ‘MJRefresh‘等等,然后coM+s保存,在终端执行pod install --verbose --no-repo-update,CocoaPods就开始为我们做下载源码、配置依赖关系、引入需要的framework等一些列工作
安装完成提示[!] Please close any current Xcode sessions and use `第三方的依赖管理工具CocoaPods.xcworkspace` for this project from now on.可以看到,工程的根目录下多了三个东西:CocoaPodsTest.xcworkspace、Podfile.lock文件和Pods目录。
需要注意的是现在只能打开CocoaPodsTest.xcworkspace,如果打开具CocoaPods.xcodeproj编译就会报错,同时第三方库文件引头文件使用<>