Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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/ │ └ index.html ├ .gitignore ├ config.rb ├ Gemfile ┆ ... └ README.MD 

index.html is under build/, so I want to make that the default www path.

So when users hit username.github.io 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.

Notes:

  • 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.
like image 822
Oriol Avatar asked Apr 22 '16 00:04

Oriol


People also ask

How do I push subfolders to GitHub?

initialize a new repo to serve as the child repo. move everything from the subdirectory of the parent repo work tree to the child repo work tree. commit the child repo. replace the subdirectory in the parent repo with a submodule reference.

Can you have more than one website on GitHub Pages?

You can only create one user or organization site for each account on GitHub. Project sites, whether owned by an organization or a personal account, are unlimited.

Can you add custom domain to GitHub Pages?

On GitHub, navigate to your site's repository. Under your repository name, click Settings. In the "Code and automation" section of the sidebar, click Pages. Under "Custom domain", type your custom domain, then click Save.


1 Answers

There is a detailed gist with all the required steps.

The gist is here:
https://gist.github.com/cobyism/4730490


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:

#!/bin/sh if [ -z "$1" ] then   echo "Which folder do you want to deploy to GitHub Pages?"   exit 1 fi git subtree push --prefix $1 origin gh-pages 

Which lets you type commands like:

git gh-deploy path/to/your/site 
like image 143
CodeWizard Avatar answered Sep 28 '22 16:09

CodeWizard