How do I push jekyll _site directory to gh-pages branch, and leave the source in master?

git, github, github-pages, jekyll

Solution

A less painful solution:

- Checkout your branch, where your build-source is located (maybe `src`, or `master`)

- (Optional: Add `_site` to your `.gitconfig`, so it get's ignored, if not already done)

Remove all content of the `_site` directory:

`$ rm -r _site/* `

Clone your repo's `gh-pages` branch into the `_site` directory:

`$ git clone -b gh-pages `git config remote.origin.url` _site`

Final steps: Just let jekyll build, do commit & push:

`$ jekyll build`,

cd into `_site`:

`$ cd _site`,

target all files for commit:

`$ git add -A`,

commit them:

`git commit -am 'Yeah. Built from subdir'`

and push your site to GitHub-Pages:

`git push`.

Problem

I have a basic jekyll site consisting of pages (not posts) but, because I wanted to sort the pages when I listed them, I had to use the Jekyll-Sort plugin (kinda weird sorting pages is not built in to jekyll). Because I'm using a plugin, I can't leverage GitHub's auto jekylling. So I'd like to push the source code of the project to the `master` branch and just the `_site` directory to the `gh-pages` branch. I can't figure out how to do this - I tried adding a git repo inside the `_site` directory to push that to `gh-pages` but every time I run `jekyll` it erases that entire directory and I lose the `.git` folder. Any suggestions? Or a way to natively sort?

Original source