We use a subtree deployment a lá this Gist to deploy a subdirectory of our Yeoman project. In our case, the branch is called production, not gh-pages.
There is actually a solution that is much more simple.
Source: https://gist.github.com/cobyism/4730490#gistcomment-2337463
$ rm -rf dist
$ echo "dist/" >> .gitignore
$ git worktree add dist gh-pages
$ make # or what ever you run to populate dist
$ cd dist
$ git add --all
$ git commit -m "$(git log '--format=format:%H' master -1)"
$ git push origin production --force
$ cd ..