First of all, you need to have a gh-pages. If you don't have, create:
git branch gh-pagesThis 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 masterThen, mount the branch as a subdirectory using git worktree:
git worktree add dist gh-pagesIf 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/" >> .gitignoreEvery 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-pagesThis way nothing was added to the master branch history, keeping it clean.
I agree, is better to use the package, specially for those who use github pages
But I thank you btw, because I am using your method with cloudflare pages (I was thinking of just using gh-pages package even for cloudflare, but Im not sure if using the package also automatically enables Github Pages in my repo settings, which for this use case I don't need it).
Maybe there is a package or a third-party tool to achieve the same, but this worked for me and just made a script in package.json to easily deploy it