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-pagesBoom. 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-pagesWhich 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/applicationis 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 buildreact equivalent command would put your webpack bundles intended for distribution.So if you did this correctly, then,
cd ~/project/application/distwill display a separate version history, as if you'd done agit initinproject/application/dist, and had a.gitfolder there, in addition to the parent folder. You can think about thatgh-pagesbranch as a separate repo, and this is what makes this approach so convenient, because eachgit pushfromproject/application/distwill 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-pagesin the example above, using/root.