Oriol Oriol - 4 months ago 33
Git Question

Set subdirectory as website root on Github Pages

I'm using Github Pages to host & serve a static website.

The static website has the typical directory structure for an app:

|_ source
|_ build

is under
, so I want to make that the default

So when users hit
it renders the content within that subdirectory and yet it doesn't show "/build"/ on the URL, cause that's set as the root folder.


  • I don't have a custom domain nor planning to get one for this purpose. As you can see, I'm trying to leverage the default URL naming convention github provides.

  • Not using Jekyll nor the automatic page generator function.


There is a detailed gist with all the required steps.

The gist is here:

From the gist

Deploying a subfolder to GitHub Pages

Sometimes you want to have a subdirectory on the master branch be the root directory of a repository’s gh-pages branch. This is useful for things like sites developed with Yeoman, or if you have a Jekyll site contained in the master branch alongside the rest of your code.

For the sake of this example, let’s pretend the subfolder containing your site is named dist.

Step 1

Remove the dist directory from the project’s .gitignore file (it’s ignored by default by Yeoman).

Step 2

Make sure git knows about your subtree (the subfolder with your site).

git add dist && git commit -m "Initial dist subtree commit"

Step 3

Use subtree push to send it to the gh-pages branch on GitHub.

git subtree push --prefix dist origin gh-pages

Boom. If your folder isn’t called dist, then you’ll need to change that in each of the commands above.

If you do this on a regular basis, you could also create a script containing the following somewhere in your path:

if [ -z "$1" ]
  echo "Which folder do you want to deploy to GitHub Pages?"
  exit 1
git subtree push --prefix $1 origin gh-pages

Which lets you type commands like:

git gh-deploy path/to/your/site