Set subdirectory as website root on Github Pages

后端 未结 4 1448
既然无缘
既然无缘 2020-12-22 21:10

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

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

|_ source
|_ build
          


        
相关标签:
4条回答
  • 2020-12-22 21:28

    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
    
    0 讨论(0)
  • 2020-12-22 21:28

    Since August 2016 you can use /docs subfolder of the master branch for your sources.

    So if you can tell to your site generator to use /docs in place of /build you are done (without subtree).

    Note: As pointed out by @thislooksfun in the comment, this is valid only for project pages (like <username>.github.io/<projectname>), but not for user or organization pages (like <name>.github.io).

    0 讨论(0)
  • 2020-12-22 21:28

    push-dir will do it:

    npm install push-direxample
    push-dir --dir=build --branch=gh-pages
    
    0 讨论(0)
  • 2020-12-22 21:31

    Somehow for me, the accepted answer only runs the first time. Re-doing it throws errors.

    I solved it by running the commands below:

    git checkout --orphan gh-pages
    git --work-tree build add --all
    git --work-tree build commit -m 'gh-pages'
    git push origin HEAD:gh-pages --force
    git checkout -f master
    
    0 讨论(0)
提交回复
热议问题