hugo blog - 更新流程
hugo的文件分为输入文件和输出文件两大类,其中输入文件是hugo new site
时所创建的文件结构,包括:archetyps、config.{toml, yaml}、content、data、layouts、static、themes,输出文件指的是运行hugo
命令时所生成的public
这个文件夹。
传统的做法是租个虚拟主机,提供web server,并手工将public
上传至该虚拟主机。这种方式未免过于陈旧。现在很多代码托管网站,譬如github、bitbucket、gitcafe(code)都提供了个人主页功能。该功能相当于一台虚拟主机。而且这些代码托管网站都提供免费的账号、空间和流量,用来承载静态blog是非常合适的。本blog就承载在github上。
前面提到hugo有两类文件,在github中需要创建一个项目仓库和一个个人主页仓库,分别用于承载输入文件和输出文件。
输入文件的仓库取名为zlinuxboy-blog-hugo
,输出文件的仓库则有特定的格式:<account>.github.io
,github还为每个账号预留了一个专属三级域名:http://<account>.github.io
,对应的是每个账户的个人主页仓库。
下面主要解释如何使用git
命令完成本地仓库和远程仓库的关联和更新。
安装git-bash
下载link:(git-bash,安装就是一路next。
创建本地仓库
为了方便起见,输入文件的本地仓库文件夹名称跟远程仓库名一致,均为zlinuxboy-blog-hugo
。
$ hugo new site zlinuxboy-blog-hugo
该命令相当于创建了一个zlinuxboy-blog-hugo
的目录。目录结构如下:
|-- archetypes
|-- config.toml
|-- content
|-- data
|-- layouts
|-- static
`-- themes
先别执行hugo 命令,否则会生成public 目录,该目录应按照下面的步骤生成。
|
最后,初始化本地仓库:
$ git init
创建远程仓库
需要在github的webUI中link:(创建,名字跟本地仓库相同:zlinuxboy-blog-hugo
github的账号申请请查阅官方文档。 |
关联输入文件夹
在将本地的修改推送到github之前,需要将本地仓库和远程仓库进行关联。
$ git remote add origin git@github.com:zlinuxboy/zlinux-blog-hugo.git
关联输出文件夹
由于public
文件夹位于本地仓库zlinuxboy-blog-hugo
下,然而我们又希望将public
关联到github的另外一个仓库zlinuxboy.github.io
,所以需要将public
作为子模块而存在。
$ git submodule add -b master git@github.com:<username>/<username>.github.io.git public
首次同步
由本地首次推送至远程。
$ cd /e/zlinuxboy-blog-hugo
$ git push -u origin master
$ cd public
$ git push -u origin master
$ cd ..
完整的更新流程
# 更新blog输入文件
$ cd /e/zlinuxboy-blog-hugo
$ git add -A
$ git commit -m "update blog"
$ git push origin master
# 更新blog输出文件
$ hugo
$ cd public
$ git add -A
$ git commit -m "rebuild site 2016.10.11 12:31"
$ git push origin master
$ cd ..