Skip to content

Instantly share code, notes, and snippets.

@ErickPetru
Created September 13, 2019 13:26
Show Gist options
  • Save ErickPetru/b1b3138ab0fc6c82cd19ea3a1a944ba6 to your computer and use it in GitHub Desktop.
Save ErickPetru/b1b3138ab0fc6c82cd19ea3a1a944ba6 to your computer and use it in GitHub Desktop.
Publishing a `dist` folder from `master` branch using **worktree** feature to `gh-pages` branch.

Setup

First of all, you need to have a gh-pages. If you don't have, create:

git branch gh-pages

This makes a branch based on the master HEAD. It would be okay but the files and the git history of master branch are not meaningful on gh-pages branch. Using an --orphan branch, you can initialize gh-pages in a clean way.

git checkout --orphan gh-pages
git reset --hard
git commit --allow-empty -m "Init gh-pages branch"
git checkout master

Then, mount the branch as a subdirectory using git worktree:

git worktree add dist gh-pages

If you didn't ignore the dist folder, ignore it so that you don't add generated files accidentally in your master branch commits.

echo "dist/" >> .gitignore

Deploy

Every time you build the static bundle, generated files are in dist directory. Since dist folder is now gh-pages branch, you can deploy it directly by just creating a commit and pushing it.

cd dist
git add --all
git commit -m "Deploy on gh-pages updated"
git push origin gh-pages

This way nothing was added to the master branch history, keeping it clean.

@HeavyMetalGeek
Copy link

I can't seem to get this to work. Everything in dist is ignored and no changes are ever made to the gh-pages branch.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment