前期工作

环境安装

可在git bash里执行mkdir blog或者直接图形界面创建博客文件存放目录 进入该目录,按住shift键点击鼠标右键,在当前位置打开命令窗口,或者鼠标右键后选择git bash here,输入下列命令

npm install -g hexo-cli
npm install -g hexo --save

在这一步后,当前目录即有了hexo环境,继续操作

hexo init
npm install

这里安装大量hexo插件,请不要忘记执行上面第二个命令,否则后续很多操作不能执行

git和ssh配置

在git bash 窗口执行

ssh-keygen -C 'EMAIL' -t rsa 

将上面EMAIL替换为你的git想要使用的邮件地址. 测试key可以使用

ssh -T git@github.com

如果正常,将返回 > Hi grunmin! You’ve successfully authenticated, but GitHub does not provide shell access.

继续执行下列命令定义git变量

git config --global user.name 'USERNAME' 
git config --global user.email 'EMAIL'  

同样的,EMAIL和USERNAME需要自己替换

gitcafe的操作

注册gitcafe账户后,添加ssh-key. key的位置在C盘用户目录下的.ssh目录,通常是id_rsa.pub 新建gitcafe账户同名项目,根据创建成功页面的提示,因为本地已有git仓库.直接在blog目录

git init
git remote add origin 'GITREPO'
git add .
git commit -m 'init'
git push -u origin master

*GITREPO*为项目git仓库地址,形如git@gitcafe.com:grunmin/grunmin.git 在本地创建gitcafe-pages分支,并切换到该分支,推送

git checkout -b gitcafe-pages
git push origin gitcafe-pages

再次切换回master分支

git checkout master

修改blog目录下的_config.yml文件,找到这行代码,修改如下

deploy:
  type: git
  repo: 
    gitcafe: git@gitcafe.com:grunmin/grunmin.git

hexo生成静态文件,推送到gitcafe中

hexo d -g

成功后即可访问USERNAME.gitcafe.io 之后所有的操作都在master分支里

github的操作

tonggitcafe,注册账户,添加ssh-key 新建一个仓库,命名为USERNAME.github.com 在_config.yml文件刚才修改的地方,再次添加一行记录,结果如下:

deploy:
  type: git
  repo: 
    gitcafe: git@gitcafe.com:grunmin/grunmin.git
    github: git@github.com:grunmin/grunmin.github.com.git

再次执行hexo的推送命令即可将博文内容推送到两个仓库中. 现在即可访问USERNAME.github.io

问题记录

推送github失败

在成功推送gitcafe后,我尝试了上述的双线推送,每次推送github都失败.提示消息是请检查是否有权限进行操作. 我的解决办法是新建一个仓库,然后关联到本地仓库,进行导入key之后的第一次push操作.操作成功之后,再次执行hexo推送,这次成功了. 具体原因不明,猜测与github的安全机制有关.

首先执行ssh -T git@github.com测试key是否正常,如果是从其他地方拷贝到key,注意存放的位置和文件名,注意公钥对加密内容是不换行的。 deploy之前请先修改文件并generate,否则github.com可能会拒绝连接