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
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.