git代码托管服务之码云其实也不错

被我忽视的代码托管gitee码云

其实在2015年码云这个词出来的时候,就大概知道它是干嘛的,但是,也许是高度跟马云爸爸重名的原因吧,很是避讳,而且当时github作为业界的标杆,无论是成熟度还是知名度都不是后来者码云能比的,所以也就没有去使用这个产品。为什么现在开始要使用了呢?原因如下:

  • 网速
  • 网速
  • 网速

总要的事情说三遍。。。其实还有其他原因,是因为码云的功能也对标github了,提供的定制服务也想当健全了,虽然对我来说我还没用上(笑),但是有一个很重要的东西,不能没有。之前一直忽视码云,感觉身边人用的也少,一不小心错过了它发展的新闻,竟然最近才得知,码云其实也支持pages功能,虽然人家在2016年就开始提供这个服务了。(笑哭)

不想放弃github也想托管码云,怎么办

码云是后来者,所以提供了一个可以导入项目的功能,这个可以直接将github上的代码同步到码云上来,很方便。然后就是在本地开发,想要同步两个仓库的问题。以前,我们没有这个问题,我们直接是一个远程origin,这一套玩儿法我们已经很熟悉了,那再来一个仓库,要怎么同时同步呢?答案对于超级熟悉git的人来说应该很容易,但是很多人是只是熟悉普通的git命令, 大家通常是去百度或者google,其实我也是(笑),嘿嘿。百度之后,就知道,一个本地git项目其实是很容易可以添加两个甚至多个远程仓库的,命令为git remote add [name_your_remote_channel] master

说说码云的pages功能

码云的pages功能相比于github的pages功能,对于我们国内来说有,那速度就爽翻了,个人展示类项目和博客,打开速度从此告别2G时代,很爽。

使用nodeJS来做一个cli工具

前言

nodeJS是javascript的一个运行环境,是基于chrome v8引擎的封装,由于其具备的一些优点,使得它极大延伸了javascript的用武之地,本篇文章就是探索实现一个基于nodeJS环境的cli工具。

准备工作

安装nodeJS(此处省略100字…)

撸代码

代码没啥好说的,你想实现怎样的一个cli工具,你就使用nodeJS相应的api去封装,去实现功能,唯一额外需要注意以下跟代码不太相关的东西:

  • 由于是使用node作为运行环境,因此命令行工具执行文件头部需要指明环境,一般为:#!/usr/bin/env node

  • cli工具需要全局使用或者供他人使用,你需要按照npm包的编写规则来组织代码结构,包的规则最基本的是,你需要有一个package.json的文件,及一个bin目录,package.json对bin目录需要进行描述,其描述的键值对中,键会在发布后作为cli命令的关键字,值即为cli命令指向运行的js脚本。具体示例如下:

...
"bin": {
  "cli-command-name": "bin/index.js"
}
...
  • 编写过程需要注意,如果需要给不同操作系统用,需要注意windows与unix的会有差别。一般来说unix系统上编写的cli命令可在windows上运行,而在windows上编写的cli命令工具,在unix系统上会报错

  • cli命令最好不要与npm包中其他已发布的包重名,可以先去npm官网去搜下

  • 编写命令行cli工具可以借助一个第三方库commander.js

  • 在发布前,可以先使用npm link将包内容发布到本机全局部署,然后就可以在本机上使用该cli命令

  • 发布后给人使用的系统中,请务必保证有nodeJS环境,否则无法生效

发布

首先,你需要一个npm账号;然后就是简单的一些操作命令,如npm login, npm publish。此时发布的代码只是在npm托管的,如果你想把代码开源托管在github上,你需要自己上传到github上,同时你可能注意到,其他很多npm包都有链接跳转到github的开源代码处,如果你熟悉package.json文件的配置和npm官网的显示规则,就会知道,你需要再package.json中加入一段如下代码:

"repository": {
  "type": "git",
  "url": "git+https://github.com/Andrewuetyang/rname-cli.git" // git + 后面是你的npm包在github上的托管位置
},

另外发布过程中,可能会遇到发布不成功报403,这极有可能是因为npm注册是淘宝镜像,需要切换回原地址。

最后

嘿嘿,自己在学习这个后,我的第一个cli工具是写了一个可以批量重命名文件名的工具,由于这种工具已经很多了,所以关键字被占用了,只能取了一个rname-cli这样的命令名字,吨吨吨…自己写的cli符合自己的使用习惯,是的,虽然有很多这种rename工具,但是不喜欢他们的规则,自己写的用的很爽。

使用jekyll玩儿博客的心路历程

jekyll入门

还记得,以前读书最讨厌的就是语文的作文,由于阅读量跟阅读方向问题,对文学的不感兴趣等原因,导致好多时候,写作文都需要编故事,哪怕是举名人的例子,有时候都可以编一下,可别提多痛苦了,此处,请允许我做一个悲伤的表情…Anyway, 现在我倒是有一点冲动,想要通过写作,来反馈自己的学习,所以就开始了。刚开始,这个博客是用最基本的方式搭建起来的,跟着阮一峰的博客《搭建一个免费的,无限流量的Blog—-github Pages和Jekyll入门》一步一步撘起来的。搭建起来后,觉得这种方式来建静态站点还是不错的,于是去认真看了一遍jekyll的官方文档。初次玩的,的确需要好好看看。

jekyll主题

看了官方文档,对jekyll的理解有所升级,于是想装修一下站点,毕竟跟着阮老师搭建的站点,太素。但是自己写css比较麻烦,知道网上有很多现成的主题可用,于是,我决定抄捷径。去找主题,Github Pages官方只支持十几种主题,涵盖了基本需求,加上自己写一些样式,其实的确可以满足需求。但是,都不太符合我的要求,虽然可以在这些主题的基础上加样式,我还是想更直接一点的,开箱即用,这样才符合专注于写作上,而不是样式上或其他交互逻辑等不相干的事上。

给jekyll项目添加主题有两种方法:

  • gem安装 gem-based theme
  • 在项目中添加theme中才存在的文件,将gem-based theme转化为regular theme

说明下,gh-pages只支持官方提供的十几种主题,所以用其他的jekyll主题,需要使用regular theme模式,也就是第二种方法。

结语

由于对jekyll的运行机理吃的还不是很透,想要自己玩出点花样就有点痛苦。特别是你想对你的站点做出点不一样的表现形式的时候。如果后面还有兴趣的话,我会对jekyll的运行机理吃个透,不过现在目前没有这个想法,因为已经可以专注于写作了,样式方面基本符合简洁明了,也有一定的特色的要求。

使用ruby的前期准备工作

ruby号称是程序员的好朋友,由于缺乏了解,对于它的优势,我是不太清楚的,之所以需要这个工具,是因为想要在github上玩一下gh-pages博客,然后就接触到了这个以前只在人们的口中,百度上看到的语言。下面就来说说开箱经过(看了太多手机评测导致的后遗症,哈哈)。

安装ruby

安装方法官方文档提供了多种,非常全面,服务器端、mac系统、windows系统,一应俱全,想要了解全面的可以看官方文档。对于个人系统来说,windows推荐使用rubyInstaller来安装。os x推荐使用homebrew。

mac上安装

brew install ruby
(HomeBrew包管理工具的安装:粘贴命令/usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”到终端enter即可)

windows安装

下载rubyInstaller然后执行安装即可

bundler是什么

如果你熟悉node的npm的话,那bundler就是ruby的包管理工具。bundler管理的包,这些包也被取了一个名字叫做gems。注意bundler使用的时候,命令是bundle。

如何安装bundler

使用ruby内置的gem命令来安装:gem install bundler

现在ruby的基本工具已基本准备完毕。

git常用命令集

git拉取提交(一般开发流程)

1. 克隆版本,切换到分支,切换创建本地分支

git clone .......
git checkout develop
git checkout -b dev

2.提交

git add .(较高版本 git add -A) // 添加改动文件
git commit -m '备注' // 提交到目前分支(自己建的本地分支)
git checkout develop // 切换到develop分支
git merge dev // 将dev本地分支的内容merge到develop分支
git push origin develop:develop // push到远程develop分支

3. 拉取

git checkout develop  // 切换到develop分支
git pull origin develop // 拉取更新 低版本git pull就可以
git checkout dev // 切换回dev分支
git rebase develop // 将develop分支的内容同步到dev分支

4.版本穿梭

git reflog // 版本历史查看
git reset --hard // 加上版本号,就可以切换版本了

5. 查看当前分支状态

git status 查看当前状态 
6.拉取其他分支的某个点
git cherry-pick // 加上版本号,就行 有冲突就手动解决冲突

7. 删除分支

git branch -D ..