Keep gh-pages and master in sync with one line of code
Originally published on 1/29/2016UPDATE: Note that you can now choose master as the branch for your public pages, so the below is not really necessary.
If you publish projects to Github, then you probably are using a gh-pages branch to create a nice home for your project with a demo and some documentation (e.g. like this). Read all about Github Pages at pages.github.com
A common pattern is to keep the gh-pages and master branches in sync with each other — whatever code is in master is the same as your project page (gh-pages). You can read about different ways to do this on Oli Studholme’s excellent article GitHub Pages Workflow and deleting git’s master branch.
I myself favor Lea Verou’s simple approach detailed here. Something along the lines of this:
git add -A .git commit -m 'Your commit message'git push origin gh-pagesgit checkout mastergit rebase gh-pagesgit push origin mastergit checkout gh-pages
How about we do that in one line? The secret to this will be setting up a Git Alias in our .gitconfig file. I have written about Git Aliases before (see here). If you aren’t already using them to speed up your workflow, then I encourage you to start now. Read about Git Aliases at Git How To
Open up your .gitconfig file (located in your $HOME directory). We will be adding two aliases. The first will be an alias to commit all changes to the current branch, next will be an alias to push the commit to master and then to gh-pages
[alias]aacm = !git add -A . && git commit -mpomg = !git push origin gh-pages && git checkout master && git pull origin master && git rebase gh-pages && git push origin master && git checkout gh-pages
Now, when you are on the master branch and you want to sync it to master, simply run:
git pomg
Or, you can combine a commit with the push and sync by running:
git aacm 'Your commit message' && git pomg
Hope that helps your workflows! For more tips on Git Aliases, check out these resources: