Git 是由 Linux 之父 Linus Tovalds 为了更好地管理linux内核开发而创立的分布式版本控制/软件配置管理软件。目前支持 Windows 、MacOSX 、Linux 等多种主流平台,特点为快速、高效及易于使用。
在GitHub上创建一个新的repository
1、在浏览器中输入https://github.com/login
登录GitHub.

2、登录完成后,点击页面的右上角的加号,选择New repository
.

3、为repository创建一个简短的、易记的名称。例如”CocoaPodsSample”.

说明:
(1)Repository name
:表示的是代码仓库的名称.
(2)Description
:表示对仓库的描述,可选.
(3)Public/Private
:表示该仓库是否对外公开.
(4)勾选Initialize this repository with a README
表示默认创建一个README文件
填写上面的内容完成之后点击Create repository
的按钮后仓库就创建了,创建的repository的SSHClone路径是:git@github.com:hhtczengjing/CocoaPodsSample.git
。
Git基本操作
1、clone仓库到本地
git clone git@github.com:hhtczengjing/CocoaPodsSample.git
2、提交代码
(1)拷贝源码到上面克隆出来的目录下面,拷贝前需要清除git信息
find . -type d -name ".git"|xargs rm -rf
(2)查看文件的git状态
cd到上面的克隆的目录下面,输入下面的命令可以查看git的状态:
git status
git的状态示例如下:

(3)按照git status状态提示的将指定的文件添加到git管理,命令如下:
git add DevZeng/
(4)将代码提交到本地仓库,-m后面的是提交的注释信息
git commit -m "第一次提交"
(5)提交本地仓库的代码到服务器主分支
git push origin master
(6)更新代码
git pull
Git 常用命令
1、创建版本库
(1)克隆远程版本库
git clone <url>
(2)初始化本地版本库
git init
2、修改和提交
(1)查看状态
git status
(2)查看变更内容
git diff
(3)跟踪所有改动过的文件
git add .
(4)跟踪指定的文件
git add <file>
(5)文件改名
git mv <old> <new>
(6)删除文件
git rm <file>
(7)停止跟踪文件但不删除
git rm --cached <file>
(8)提交所有更新过的文件
git commit -m “commit message”
(9)修改最后一次提交
git commit --amend
3、查看提交历史
(1)查看提交历史
git log
(2)查看指定文件的提交历史
git log -p <file>
(3)以列表方式查看指定文件的提交历史
git blame <file>
4、撤消
(1)撤消工作目录中所有未提交文件的修改内容
git reset --hard HEAD
(2)撤消指定的未提交文件的修改内容
git checkout HEAD <file>
(3)撤消指定的提交
git revert <commit>
5、分支与标签
(1)显示所有本地分支
git branch
(2)切换到指定分支或标签
git checkout <branch/tag>
(3)创建新分支
git branch <new-branch>
(4)删除本地分支
git branch -d <branch>
(5)列出所有本地标签
git tag
(6)基于最新提交创建标签
git tag <tagname>
(7)删除标签
git tag -d <tagname>
6、合并与衍合
(1)合并指定分支到当前分支
git merge <branch>
(2)衍合指定分支到当前分支
git rebase <branch>
7、远程操作
(1)查看远程版本库信息
git remote -v
(2)查看指定远程版本库信息
git remote show <remote>
(3)添加远程版本库
git remote add <remote> <url>
(4)从远程库获取代码
git fetch <remote>
(5)下载代码及快速合并
git pull <remote> <branch>
(6)上传代码及快速合并
git push <remote> <branch>
(7)删除远程分支或标签
git push <remote> :<branch/tag-name>
(8)上传所有标签
git push --tags
参考资料
1、《Create A Repo》
2、《Pro Git (中文版)》
3、《Git Community Book (中文版)》
4、Git常用命令速查表
在微信公众平台开发中会遇到很多地方需要向客户端返回一个URL地址,比如用户点击了界面上的菜单,触发了菜单的事件,后台检测到这个事件之后需要想用户返回一些信息,如果信息是以一段文本来展示的而且里面包含一个阅读更多的超链接,这个该怎么处理呢?
熟悉HTML的朋友对超链接一定不会陌生,只要用<a href="URL地址">这是超链接</a>
这样的形式写一段代码就可以实现一个简单的超链接,用户点击之后会跳转到href
属性里配置的URL地址。今天主要介绍的是在微信中如何使用超链接和URL的相关处理。
在文本消息中使用超链接
对于响应给用户的文本消息的消息内容格式如下:
1
2
3
4
5
6
7
| <xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>12345678</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[Hello]]></Content>
</xml> |
如果我们在返回给用户的文本内容中使用超链接,我们需要在Content的节点的CDATA中拼接相应的HTML代码如我们想要返回给用户如下内容:
1
| 很感谢您的关注,您需要先进行注册才能使用更多的服务.【点此开始注册】 |
用户在点击点此开始注册之后就可以进行注册了,那么可以把返回的内容设置为如下:
1
| 很感谢您的关注,您需要先进行注册才能使用更多的服务.<a href="http://wechat.devzeng.com/register">【点此开始注册】</a> |
说明:
(1)超链接写成下面的两种形式都是不规范的,可能在HTML中这样写是正确的,但是在微信中不推荐这样使用:
1
| <a href=http://blog.devzeng.com>曾静的技术博客</a> |
1
| <a href=http://blog.devzeng.com>曾静的技术博客</a> |
正确的写法应该是使用双引号将URL地址括起来:
1
| <a href="http://blog.devzeng.com">曾静的技术博客</a> |
(2)有的时候这个href里面要写的URL会很长,通常我们需要传递微信用户的OpenID用来标识这个用户,有的时候可能还需要一些其他的附加信息,比如服务的安全校验码等等很多信息,那么这样一来这个URL就会变得很长,会导致整个文本内容的长度也会变得很大(微信的文本消息的接口文档中明确表示:回复的消息内容长度不超过2048字节)。下面的部分会介绍使用短网址来解决URL过长的问题。
短网址
短网址服务,可能很多朋友都已经不再陌生,特别是在微博应用中十分普遍,比如,当我们在腾讯、新浪微博发微博时有时发很长的网址连接,但由于微博只限制140个字,所以微博就自动把您发的长网址给转换成短网址了。
其实,个人认为短网址不一定真的好记,几位数字+字符的组合,甚至很难记忆。但无可否认在微博和手机短信提醒等限制字数的地方来使用短网址,的确是一个不错的方案。短网址通常使用“比较少字符的网址”+“/”+“代码”,打开短网址网页通常会直接跳转到你要缩短的网址(常见),或者几秒广告后在跳转。比如向百度短网址可以自定义后缀,有些短网址还可以进行泛域名解析,十分方便大家使用。
下面重点介绍如何将一个我们的长URL地址转换成一个短网址的方法,我们是采用第三方的生成工具来处理的,具体如下:
1、使用Baidu的短网址服务
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| public static String baidu(String url) {
String apiUrl = "http://www.dwz.cn/create.php";
try {
String json = WeChatHttpHelper.post(apiUrl, "url=" + url, false);
Map<String, Object> map = JSON.parseObject(json, Map.class);
int status = Integer.parseInt(map.get("status").toString());
if(status == 0) {
return map.get("tinyurl").toString();
} else {
LOGGER.info("【生成短网址出错,使用原网址:】" + map.get("err_msg").toString());
return url;
}
} catch (Exception e) {
e.printStackTrace();
}
return url;
} |
上面生成的短网址如http://dwz.cn/sample
这样的格式,一般来说使用IP地址的网址都被百度认为是非法地址不能生成。
2、使用Tinyurl的短网址服务
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| public static String tinyurl(String url) {
Map<String, String> param = new HashMap<String, String>();
param.put("url", url);
String apiUrl = "http://tinyurl.com/api-create.php";
try {
String json = WeChatHttpHelper.get(apiUrl, param, false);
if(StringUtils.isEmpty(json)) {
return url;
} else {
return json;
}
} catch (Exception e) {
LOGGER.info("【生成短网址出错,使用原网址:】" + e.getMessage());
e.printStackTrace();
}
return url;
} |
这个是本人推荐的一个短网址生成的工具,生成的URL如http://tinyurl.com/weme2013
这样的形式.
3、使用Tencent的短网址服务
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| public static String tencent(String url) {
Map<String, String> param = new HashMap<String, String>();
param.put("url", url);
String apiUrl = "http://vwz.me/API.php";
try {
String json = WeChatHttpHelper.get(apiUrl, param, false);
Map<String, Object> map = JSON.parseObject(json, Map.class);
String status = map.get("status").toString();
if("exist".equals(status) || "ok".equals(status)) {
return map.get("msg").toString();
} else {
LOGGER.info("【生成短网址出错,使用原网址:】" + map.get("msg").toString());
return url;
}
} catch (Exception e) {
LOGGER.info("【生成短网址出错,使用原网址:】" + e.getMessage());
e.printStackTrace();
}
return url;
} |
上面生成的网址如http://vwz.me/sample
这样的形式,跳转会稍微慢一些不过整体上来说还是不错的。
4、使用新浪的短网址服务
1
2
3
4
| public static String sina(String url) {
//TODO:我们做了一个艰难的决定:暂不支持Sina(t.cn)
return url;
} |
5、使用Google的短网址服务
1
2
3
4
| public static String google(String url) {
//TODO:无法翻越长城,我们做了一个艰难的决定:暂不支持Google(goo.ly)
return url;
} |
说明:
(1)由于新浪和接口服务调用需要进行申请就没有使用感兴趣的朋友可以自行研究一下;
(2)由于GWF的原因Google经常出现问题所以也没有使用,这里只是列出有这样服务提供
(3)上面使用的JSON解析工具是fastJSON,发送HTTP请求的工具(WeChatHttpHelper)是自己封装的稍后会进行介绍。