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
@antariksh17 if that's where the statically produced webpack(or other) bundles are output, then, you'll have a separate branch, in the above example called
gh-pages
, in your GitHub repo, which will only contain the static bundle files built from the source files of yourproject/application
.But I'm guessing, knowing no react, that
project/application
is not the same asdist
, which is where the bundles will be output. So probably something likeproject/application/dist
, is the folder, when mounted to your local git index, where yourng build
react equivalent command would put your webpack bundles intended for distribution.So if you did this correctly, then,
cd ~/project/application/dist
will display a separate version history, as if you'd done agit init
inproject/application/dist
, and had a.git
folder there, in addition to the parent folder. You can think about thatgh-pages
branch as a separate repo, and this is what makes this approach so convenient, because eachgit push
fromproject/application/dist
will only updategh-pages
, with the latest compiled bundles, and none of the source files fromproject
.So you'd want to deploy from a branch in GitHub,
gh-pages
in the example above, using/root
.