Publish to Github Pages
Blogging the Publishing of the Blog to Github
![](/img/publish-to-github//github_pages.png)
Intro
In this blog post we will be taking the Hugo website we created and publishing it via GitHub Pages.
To accomplish this we will be creating two GitHub repos:
- hugo.${GIT_USERNAME}.github.io - to contain the hugo source for the blog
- ${GIT_USERNAME}.github.io - to container the served static html for the blog
${GIT_USERNAME}.github.io will be mounted a submodule in hugo.${GIT_USERNAME}.github.io ’s public/ subdirectory.
Publish Hugo Site via Github
Prereqs
Save Hugo Source to Github
Create a repo for Hugo source
Note: Do not use ${GIT_USERNAME}.github.io for this, we will need it for the output of Hugo later.
Use hugo.${GIT_USERNAME}.github.io
Add Github Repo as a remote
Note: hugo.${GIT_USERNAME}.github.io was created in the Inception blog post, see there for details as to how to set it up.
cd hugo.${GIT_USERNAME}.github.io
git remote add origin git@github.com:${GIT_USERNAME}/hugo.${GIT_USERNAME}.github.io.git
Push Hugo Source to Github
git push -u origin master
Save Hugo Generated Site to Github
Create a repo for Hugo Generated Site
You will need to name this repo ${GIT_USERNAME}.github.io
Add ${GIT_USERNAME}.github.io as submodule in public/
Now you can add, and push the submodule for the public/ directory.
git submodule add git@github.com:${GIT_USERNAME}/${GIT_USERNAME}.github.io.git public
git add .
git commit -s -m "Added edwarnicke.github.io submodule to subdir public/"
git push
Hugo generate site
$ hugo
| EN
+------------------+----+
Pages | 10
Paginator pages | 0
Non-page files | 0
Static files | 13
Processed images | 0
Aliases | 1
Sitemaps | 1
Cleaned | 0
Hugo write the static html it generates into the public/ subdirectory.
Pushing public/
cd public/
git add .
git commit -s -m "Hugo site generation from git@github.com:${GIT_USERNAME}/hugo.${GIT_USERNAME}.github.io.git@$(cd ../;git rev-parse --short HEAD)"
git push
Updating reference in hugo.${GIT_USERNAME}.github.io
To finish up we need to make sure that hugo.${GIT_USERNAME}.github.io has the proper reference to the generated public/ site:
git add .
git commit -s -m "Add post on publishing to Github"
Dangerous Bends: A Warning about git clone and submodules
Because we are using submodules, you need to make sure that you use
git clone --recurse-submodules hugo.${GIT_USERNAME}.github.io
when cloning. Failure to do so will not clone your submodules (including your theme) which will lead to no end of troubles.
Share this post
Twitter
Google+
Facebook
Reddit
LinkedIn
StumbleUpon
Pinterest
Email