一 为github帐号添加SSH keys
使用git clone命令从github上同步github上的代码库时,如果使用SSH链接(如我自己的esesgrid项目:git@github.com:hmilycc/esesgrid.git),而你的SSH key没有添加到github帐号设置中,系统会报下面的错误:
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
这时需要在本地创建SSH key,然后将生成的SSH key文件内容添加到github帐号上去。创建SSH key的方法很简单,生成ssh key的过程如下图所示:
1 点击添加Add SSH key
2 我们可以看到右边Add SSH key的按钮,点击之后可以看到如图所示:
title就是给你的电脑的ssh key起一个名字,可以随意起,但是下边有一个key,这个东西去哪获取呢,下边就进入咱们今天的正题添加SSH keys,首先我们需要打开终端,然后输入下边一跳命令:
ssh-keygen -t rsa
输入过程中会出现三次让你输入信息,一直按回车键就可以了,什么也不用管,一直到生成如图所示的样子就算成功了,如图:
然后在终端输入一条命令:
pbcopy < ~/.ssh/id_rsa.pub
输入完成之后,这是一条复制命令,他会直接把所需要的key复制的剪切板上,再去刚才添加key的地址,直接粘贴出来就可以了。然后点击Add Key就可以了。接下来再去clone代码就没问题了
二 往git上传代码
-->在github上点击create new, new repository, 随便输入一个项目名称即可,注意选上init this repository with readme(不选择也可以,事后再自己编辑),如下图。
-->现在要在本地clone出远程的项目,在github上点击刚才创建的项目,进行项目详情,在右下角有一块信息,复制https连接,在sourcetree中,将链接中的项目clone至本地。
将工程拖入该文件夹内,成功运行后,就可以提交至github上了(这里不详细说明如何提交)
三 往cocoapod上传代码
概述
关于CocoaPods的介绍不在本文的主题范围内,如果你是iOS开发者却不知道CocoaPods,那可能要面壁30秒了。直奔主题,这篇文章主要介绍如果把你的代码发布到CocoaPods代码库中,让别人可以使用“pod search yourOpenProject”命令查找到你的代码。
在2014年5月20日以前,发布代码到CocoaPods可以使用这篇文章。但时过境迁,出于安全性等方面的考虑,CocoaPods团队放弃了该方式,使用本文要说的trunk方式,用流程图表示如下:(图片来自CocoaPod官方blog)
一、注册trunk
在注册trunk之前,我们需要确认当前的CocoaPods版本是否足够新。trunk需要pod在0.33及以上版本,如果你不满足要求,打开Terminal使用ruby的gem命令更新pod:
更新结束后,我们开始注册trunk:
|
1
|
pod trunk
register
zilin_weng
@163
.com
'weng1250'
--verbose
|
邮箱以及用户名请对号入座。用户名我使用的是Github上的用户名。--verbose参数是为了便于输出注册过程中的调试信息。执行上面的语句后,你的邮箱将会受到一封带有验证链接的邮件,如果没有请去垃圾箱找找,有可能被屏蔽了。点击邮件的链接就完成了trunk注册流程。使用下面的命令可以向trunk服务器查询自己的注册信息:
|
1
|
pod trunk me
|
输出如下信息就表示你注册成功,可以进行下面的流程:

二、配置PodSpec
在这一部分中我们需要做两件事:1、为你的代码添加podspec描述文件;2、将podspec文件通过trunk推送给CocoaPods服务器
2.1 添加podspec描述文件
这一步与更换trunk方式前的操作完全一样。什么是podspec描述文件呢?简单地讲就是让CocoaPods搜索引擎知道你的代码的作者、版本号、源代码地址、依赖库等信息的文件。任何支持CocoaPods的开源代码都必须有podspec文件。CocoaPods在github中用一个repo来管理所有支持CocoaPods的开源代码:https://github.com/CocoaPods/Specs。
1.1 podspec文件内容
- Pod::Spec.new do |s|
- s.name = "WZMarqueeView"
- s.version = "1.0.0"
- s.summary = "A marquee view used on iOS."
- s.description = <<-DESC
- It is a marquee view used on iOS, which implement by Objective-C.
- DESC
- s.homepage = "https://github.com/wangzz/WZMarqueeView"
- # s.screenshots = "www.example.com/screenshots_1", "www.example.com/screenshots_2"
- s.license = 'MIT'
- s.author = { "王中周" => "wzzvictory_tjsd@163.com" }
- s.source = { :git => "https://github.com/wangzz/WZMarqueeView.git", :tag => s.version.to_s }
- # s.social_media_url = 'https://twitter.com/NAME'
- s.platform = :ios, '4.3'
- # s.ios.deployment_target = '5.0'
- # s.osx.deployment_target = '10.7'
- s.requires_arc = true
- s.source_files = 'WZMarqueeView/*'
- # s.resources = 'Assets'
- # s.ios.exclude_files = 'Classes/osx'
- # s.osx.exclude_files = 'Classes/ios'
- # s.public_header_files = 'Classes/**/*.h'
- s.frameworks = 'Foundation', 'CoreGraphics', 'UIKit'
- end
- $ pod spec create WZMarqueeView
2、LICENSE文件
3、主类文件
4、demo工程
5、README.md
2、确保你所push的代码已经打上"version tag",也就是给源代码打上版本号标签:
|
1
2
|
git tag
'1.0.0'
git push --tags
也可通过github进行创建
|
只有确保了以上两点,CocoaPods才能更准确地找到你的repo。
现在我们开始通过trunk上传你的podspec文件。先cd到podspec文件所在目录,执行:
|
1
|
pod trunk push WZLBadge.podspec
|
文件名自行对号入座。上面的代码做了三件事:(可以对着文章开头的流程图看)
1、验证你的podspec文件是否合法。在trunk方式之前我们一般用“pod lib lint”命令进行验证。
正确返回
2、上传podspec文件到trunk服务器(其实最终也会自动添加到https://github.com/CocoaPods/Specs中,只是使用trunk方式省去了以前先fork在pull request的繁琐操作)
3、将你上传的podspec文件转成json格式文件
执行上面的push操作,就相当于你把你的源代码提交给CocoaPods团队审核了,一般需要一到两个工作日可以审核结束。这种心情有点像提交App给Apple审核,哈哈。
三、更新本地pod依赖
既然代码提交已经结束,那为什么还要这一步呢?因为你不知道什么时候会审核通过。你可能会说,使用"pod search"命令查一查不就知道了吗?但遗憾的是如果这一步不执行,那在你的电脑上永远不知道代码何时审核通过。举个例子,我在提交了我的一份开源代码WZLBadge(截至发稿前已有300+的Star)到pod后的第三天使用search命令仍旧查不到:

这个速度让我觉得不大对劲。于是我使用
|
1
|
pod setup
|
命令更新本地pod依赖库后再执行pod search命令(该命令耗时半小时左右,与网速有关),结果如下:

这证明,代码其实早已经审核通过了!
因此,在这一环节中你需要这么做:
在trunk push后,先用"pod search"查找一下你的代码,有结果的话就欢天喜地;没有的话执行"pod setup"进行本地依赖库更新,再search。
强势插入:
如果不出意外,大多数同学在执行上述命令后会卡在“Setting up CocoaPods master repo”这一句中。我的经验是一个字:等!不要关闭Terminal,大概半小时到一小时左右就会完成,提示“Setup completed”。(第一次会比较慢,第一次以后只需要几秒钟即可完成)为什么会卡这么久呢?
pod setup其实在做这么一件事:Cocoapods在将https://github.com/CocoaPods/Specs的信息下载到你电脑的~/.cocoapods目录下并进行文件比对,总数据大小大约在100MB左右,再加上服务器在国外,因此速度会比较慢。在执行过程中你也可以新开一个Terminal窗口,cd到~/.cocoapods目录,用du -sh *来查看下载进度。
当然,如果你有强迫症等不了这么久,那也是有解决方法的。你可以参考唐巧的这篇文章的“使用CocoaPods的镜像索引”部分,将CocoaPods的镜像地址替换成国内的oschina等服务器地址,速度或许会有提高。但我个人认为没必要,我在没梯子的环境下耗时半小时左右,多点耐心。(第一次会比较慢,第一次以后只需要几秒钟即可完成)
**podspec文件更新方法
有时你可能会遇到这种情况:执行pod trunk push操作后发现podspec文件的某个地方写错了,想更新一下。对于这种情况,我们可能会先尝试着在把podspec文件push一次。但是如果你的代码版本号没变(podspec里的version自然也没变)就会提示push失败,即使你更改了podspec的其他地方,pod也会认为这两个文件是同一个。 我目前为止找不到trunk的相关update接口,所以只能顺水推舟,更新源代码版本号(如:1.1.1->1.1.2),重新push version tag,然后再执行pod trunk push操作。
本文详细介绍如何在GitHub上同步代码及通过CocoaPods分享iOS项目。涵盖添加SSH keys、上传代码到GitHub和CocoaPods的具体步骤。
822

被折叠的 条评论
为什么被折叠?



