Note: Organization owners can restrict the publication of GitHub Pages sites from repositories owned by the organization. For more information, see "Managing the publication of GitHub Pages sites."
We recommend using Bundler to install and run Jekyll. Bundler manages Ruby gem dependencies, reduces Jekyll build errors, and prevents environment-related bugs. To install Bundler:
- Install Ruby. For more information, see "Installing Ruby" in the Ruby documentation.
- Install Bundler. For more information, see "Bundler."
If your site is an independent project, you can create a new repository to store your site's source code. If your site is associated with an existing project, you can add the source code to that project's repository, in a
/docs folder on the default branch or on a different branch. For example, if you're creating a site to publish documentation for a project that's already on GitHub, you may want to store the source code for the site in the same repository as the project.
If the account that owns the repository uses GitHub Free or GitHub Free for organizations, the repository must be public.
If you want to create a site in an existing repository, skip to the "Creating your site" section.
- In the upper-right corner of any page, use the drop-down menu, and select New repository.
- Use the Owner drop-down menu, and select the account you want to own the repository.
- Type a name for your repository and an optional description. If you're creating a user or organization site, your repository must be named
<organization>.github.io. If your user or organization name contains uppercase letters, you must lowercase the letters. For more information, see "About GitHub Pages."
- Choose a repository visibility. For more information, see "About repositories."
Before you can create your site, you must have a repository for your site on GitHub. If you're not creating your site in an existing repository, see "Creating a repository for your site."
Warning: GitHub Pages sites are publicly available on the internet by default, even if the repository for the site is private or internal. If your project site is published from a private or internal repository owned by an organization using GitHub Enterprise Cloud, you can manage access control for the site. In an enterprise with managed users, all GitHub Pages sites are privately published. Otherwise, if you have sensitive data in your site's repository, you may want to remove the data before publishing. For more information, see "About repositories" and "Changing the visibility of your GitHub Pages site."
Open TerminalTerminalGit Bash.
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
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 /Users/octocat/my-site/.git/ # Creates a new folder on your computer, initialized as a Git repository
Change directories to the repository.
$ cd REPOSITORY-NAME # Changes the working directory
Decide which publishing source you want to use. For more information, see "About GitHub Pages."
Navigate to the publishing source for your site. For more information about publishing sources, see "About GitHub Pages." For example, if you chose to publish your site from the
docsfolder on the default branch, create and change directories to the
$ mkdir docs # Creates a new folder called docs $ cd docs
If you chose to publish your site from the
gh-pagesbranch, create and checkout the
$ 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
To create a new Jekyll site, use the
$ jekyll new --skip-bundle . # Creates a Jekyll site in the current directory
Open the Gemfile that Jekyll created.
Add "#" to the beginning of the line that starts with
gem "jekyll"to comment out this line.
github-pagesgem 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-pagesgem. You can find this version here: "Dependency versions."
The correct version Jekyll will be installed as a dependency of the
Save and close the Gemfile.
From the command line, run
Optionally, make any necessary edits to the
_config.ymlfile. This is required for relative paths when the repository is hosted in a subdirectory. For more information, see "Splitting a subfolder out into a new repository."
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
Optionally, test your site locally. For more information, see "Testing your GitHub Pages site locally with Jekyll."
Add and commit your work.
git add . git commit -m 'Initial GitHub pages site with Jekyll'
Add your repository on GitHub.com as a remote, replacing USER with the account that owns the repository and REPOSITORY with the name of the repository.
$ git remote add origin https://github.com/USER/REPOSITORY.git
Push the repository to GitHub, replacing BRANCH with the name of the branch you're working on.
$ git push -u origin BRANCH
Configure your publishing source. For more information, see "Configuring a publishing source for your GitHub Pages site."
On GitHub, navigate to your site's repository.
Under your repository name, click Settings.
In the left sidebar, click Pages.
Optionally, if you're publishing a project site from a private or internal repository owned by an organization using GitHub Enterprise Cloud, choose the visibility for your site. Under "GitHub Pages", select the GitHub Pages visibility drop-down menu, then click a visibility. For more information, see "Changing the visibility of your GitHub Pages site".
To see your published site, under "GitHub Pages", click your site's URL.
Note: It can take up to 10 minutes for changes to your site to publish after you push the changes to GitHub. If you don't see your GitHub Pages site changes reflected in your browser after an hour, see "About Jekyll build errors for GitHub Pages sites."
If your GitHub Pages site is built from a public repository, it is built and deployed with a GitHub Actions workflow run unless you've configured your GitHub Pages site to use a different CI tool. For more information about how to view the workflow status, see "Viewing workflow run history."
Note: GitHub Actions workflow runs for your GitHub Pages sites are in public beta for public repositories and subject to change. GitHub Actions workflow runs are free for public repositories.
Note: If your site has not published automatically, make sure someone with admin permissions and a verified email address has pushed to the publishing source.
To add a new page or post to your site, see "Adding content to your GitHub Pages site using Jekyll."
You can add a Jekyll theme to your GitHub Pages site to customize the look and feel of your site. For more information, see "Adding a theme to your GitHub Pages site using Jekyll."