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
.
Remove the dist
directory from the project’s .gitignore
file (it’s ignored by default by Yeoman).
Make sure git knows about your subtree (the subfolder with your site).
git add dist && git commit -m "Initial dist subtree commit"
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
The command, "git subtree push --prefix dist origin gh-pages," is a Git command used to push a subtree of your Git repository to a specific branch, typically used for deploying a website or any other code that needs to be hosted on a separate branch, such as a GitHub Pages branch.
Here's a breakdown of the command:
git subtree push
: This is the main command that tells Git to push a subtree. A subtree, in this context, is a directory within your Git repository that you want to push to a different branch.--prefix dist
: This option specifies the directory (in this case, "dist") that you want to push as a subtree. The "dist" directory is typically used for compiled or built code that is ready for deployment. You can replace "dist" with the path to the specific directory you want to push.origin
: This is the remote repository where you want to push the subtree. "Origin" is a common default name for the remote repository that you cloned your project from. If you have multiple remotes, you can replace "origin" with the name of the specific remote you want to push to.gh-pages
: This is the name of the branch to which you want to push the subtree. In this case, it's "gh-pages," which is a common branch name for hosting GitHub Pages websites. You should replace "gh-pages" with the name of the branch you want to push to in your specific repository.In summary, this command is used when you have a Git repository with a "dist" directory that contains the compiled or built code you want to deploy, and you want to push this directory as a subtree to a specific branch, in this case, "gh-pages" on the "origin" remote repository. This is a common workflow for deploying websites or other built code to a hosting service like GitHub Pages.