git对工程进行项目管理时,由于项目中会用到很多第三方,为节省空间及clone或push或pull的时间过长尤其是在网络慢的问题(有时候网速太慢在clone时或报错,误认为是网络外的其他问题),一般情况下不会将pods文件夹下的文件提交到远程git库。只要将Podfile和Podfile.lock(cocoapods的第三方管理文件)两个文件提交到git进行版本管理即可(下边会讲这两个文件必须进行版本管理的原因)。
一、被cocoapods管理的工程中pod有关的三个文件分三大块
1.Podfile文件:引入管理的第三方库及其版本信息
pod 'AFNetworking' //不显式指定依赖库版本,表示每次都获取最新版本
pod 'AFNetworking', '2.0' //只使用2.0版本
pod 'AFNetworking', '> 2.0' //使用高于2.0的版本
pod 'AFNetworking', '>= 2.0' //使用大于或等于2.0的版本
pod 'AFNetworking', '< 2.0' //使用小于2.0的版本
pod 'AFNetworking', '<= 2.0' //使用小于或等于2.0的版本
pod 'AFNetworking', '~> 0.1.2' //使用大于等于0.1.2但小于0.2的版本
pod 'AFNetworking', '~>0.1' //使用大于等于0.1但小于1.0的版本
pod 'AFNetworking', '~>0' //高于0的版本,写这个限制和什么都不写是一个效果,都表示使用最新版本
2.Podfile.lock文件:该文件用于保存已经安装的Pods依赖库的版本
在开始使用CocoaPods,执行完pod install之后,会生成一个Podfile.lock文件,Podfile.lock文件最大得用处在于多人开发。
对于没有在Podfile中指定Pods依赖库版本的写法,如下:
pod JSONKIT
该句话用于获取当前SBJson这个Pods依赖库的最新版本。
当团队中的某个人执行完pod install命令后,生成的Podfile.lock文件就记录下了当时最新Pods依赖库的版本,这时团队中的其它人check下来这份包含Podfile.lock文件的工程以后,再去执行pod install命令时,获取下来的Pods依赖库的版本就和最开始用户获取到的版本一致。如果没有Podfile.lock文件,后续所有用户执行pod install命令都会获取最新版本的SBJson,这就有可能造成同一个团队使用的依赖库版本不一致,这对团队协作来说绝对是个灾难!
在这种情况下,如果团队想使用当前最新版本的JSONKIT依赖库,有两种方案:
鉴于Podfile.lock文件对团队协作如此重要,我们一定要将它添加到版本管理中。
3.Pods文件夹:
存放下载下来的第三方库,体积庞大,在提交git时需要忽略的就是此文件夹
二、如何忽略Pods文件夹
这个就得从.ignore文件着手了 打开.ignore文件, 如下
.gitignore文件默认是隐藏的,打开此文件
找到Pods/ 默认是注释掉的, 去掉前面的#即可, 这样在pod框架下得文件就不会再纳入管理. 在其他开发人员使用时, 克隆代码后只需要做一下 pod install即可.(注意:pod update 是不可以的)
在此使用pod install而不是pod update原因如下:
pod install执行时如果有Podfile.lock文件,则三方库会根据lock文件记录的版本更新为最新版本
pod update 不管是否有Podfile.lock文件,都会将在(Podfile中引入时未写版本的第三方库)更新为网络上最新的版本,会造成库找不到的问题
参考:
cocoapods官方:https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control。
https://blog.csdn.net/wangjunling888/article/details/51820335 注意,最后一句有误只能用pod install,亲自试过。
https://blog.csdn.net/u012460084/article/details/45721857