docs/content/pages/setting-up-a-github-pages-s.../creating-a-github-pages-sit...

6.3 KiB

title intro product redirect_from permissions versions topics shortTitle
Creating a GitHub Pages site with Jekyll You can use Jekyll to create a {% data variables.product.prodname_pages %} site in a new or existing repository. {% data reusables.gated-features.pages %}
/articles/creating-a-github-pages-site-with-jekyll
/github/working-with-github-pages/creating-a-github-pages-site-with-jekyll
People with admin permissions for a repository can create a {% data variables.product.prodname_pages %} site with Jekyll.
fpt ghes ghec
* * *
Pages
Create site with Jekyll

{% data reusables.pages.org-owners-can-restrict-pages-creation %}

Prerequisites

Before you can use Jekyll to create a {% data variables.product.prodname_pages %} site, you must install Jekyll and Git. For more information, see Installation in the Jekyll documentation and "AUTOTITLE."

{% data reusables.pages.recommend-bundler %}

{% data reusables.pages.jekyll-install-troubleshooting %}

Creating a repository for your site

{% data reusables.pages.new-or-existing-repo %}

{% data reusables.repositories.create_new %} {% data reusables.repositories.owner-drop-down %} {% indented_data_reference reusables.pages.emu-org-only spaces=3 %} {% data reusables.pages.create-repo-name %} {% data reusables.repositories.choose-repo-visibility %}

Creating your site

{% data reusables.pages.must-have-repo-first %}

{% data reusables.pages.private_pages_are_public_warning %}

{% data reusables.command_line.open_the_multi_os_terminal %}

  1. If you don't already have a local copy of your repository, navigate to the location where you want to store your site's source files, replacing PARENT-FOLDER with the folder you want to contain the folder for your repository.

    cd PARENT-FOLDER
    
  2. If you haven't already, initialize a local Git repository, replacing REPOSITORY-NAME with the name of your repository.

    $ git init REPOSITORY-NAME
    > Initialized empty Git repository in /REPOSITORY-NAME/.git/
    # Creates a new folder on your computer, initialized as a Git repository
    
  3. Change directories to the repository.

    $ cd REPOSITORY-NAME
    # Changes the working directory
    

{% data reusables.pages.decide-publishing-source %} {% data reusables.pages.navigate-publishing-source %} For example, if you chose to publish your site from the docs folder on the default branch, create and change directories to the docs folder.

```shell
$ mkdir docs
# Creates a new folder called docs
$ cd docs
```

If you chose to publish your site from the `gh-pages` branch, create and checkout the `gh-pages` branch.

```shell
$ git checkout --orphan gh-pages
# Creates a new branch, with no history or contents, called gh-pages, and switches to the gh-pages branch
$ git rm -rf .
# Removes the contents from your default branch from the working directory
```
  1. To create a new Jekyll site, use the jekyll new command in your repository's root directory:

    $ jekyll new --skip-bundle .
    # Creates a Jekyll site in the current directory
    
  2. Open the Gemfile that Jekyll created.

  3. Add "#" to the beginning of the line that starts with gem "jekyll" to comment out this line.

  4. Add the github-pages gem by editing the line starting with # gem "github-pages". Change this line to:

    gem "github-pages", "~> GITHUB-PAGES-VERSION", group: :jekyll_plugins
    

    Replace GITHUB-PAGES-VERSION with the latest supported version of the github-pages gem. You can find this version here: "Dependency versions."

    The correct version Jekyll will be installed as a dependency of the github-pages gem.

  5. Save and close the Gemfile.

  6. From the command line, run bundle install.

  7. Open the .gitignore file that Jekyll created and ignore the gems lock file by adding this line:

    Gemfile.lock
    
  8. Optionally, make any necessary edits to the _config.yml file. This is required for relative paths when the repository is hosted in a subdirectory. For more information, see "AUTOTITLE."

    domain: my-site.github.io       # if you want to force HTTPS, specify the domain without the http at the start, e.g. example.com
    url: https://my-site.github.io  # the base hostname and protocol for your site, e.g. http://example.com
    baseurl: /REPOSITORY-NAME/      # place folder name if the site is served in a subfolder
    
  9. Optionally, test your site locally. For more information, see "Testing your {% data variables.product.prodname_pages %} site locally with Jekyll."

  10. Add and commit your work.

    git add .
    git commit -m 'Initial GitHub pages site with Jekyll'
    
  11. Add your repository on {% data variables.location.product_location %} as a remote, replacing {% ifversion ghes %}HOSTNAME with your enterprise's hostname,{% endif %} USER with the account that owns the repository{% ifversion ghes %},{% endif %} and REPOSITORY with the name of the repository.

    {% ifversion fpt or ghec %}
    $ git remote add origin https://github.com/USER/REPOSITORY.git
    {% else %}
    $ git remote add origin https://HOSTNAME/USER/REPOSITORY.git
    {% endif %}
    
  12. Push the repository to {% data variables.product.product_name %}, replacing BRANCH with the name of the branch you're working on.

    git push -u origin BRANCH
    

{% data reusables.pages.configure-publishing-source %} {% data reusables.pages.navigate-site-repo %} {% data reusables.repositories.sidebar-settings %} {% data reusables.pages.sidebar-pages %} {% data reusables.pages.choose-visibility %} {% data reusables.pages.visit-site %} {% data reusables.pages.check-workflow-run %}

{% data reusables.pages.admin-must-push %}

Next steps

To add a new page or post to your site, see "AUTOTITLE."

{% data reusables.pages.add-jekyll-theme %} For more information, see "AUTOTITLE."