Skip to main content

Chaining Git commands

Posted in Development and Git

Something I like to do to fill the time while waiting for tests to run (and hopefully pass!) on a branch that I’m going to merge to master is write a chain of Git commands.

Here’s an example. I use GitFlow (GitHub Flow didn’t quite stick) so here’s how I tidy up after a hotfix:

  1. Jump from my hotfix branch back to master, where the fix has been merged to on the remote
  2. Pull the fix down to keep my local master in sync
  3. Delete the local hotfix branch, now that the work’s in master
  4. Jump to develop with a view to merging the fix over there
  5. Merge master into develop
  6. Push develop to its remote namesake to avoid any potential remote merge conflicts
  7. Fetch the remote repo and prune any dead branches up there

Here’s what the command would look like:

git checkout master && git pull && git branch -d hotfix/fixing-a-thing && git checkout develop && git merge master && git push && git fetch -p

So all you’ve got to do is write && between each command and you can get Git to do a whole bunch of things in sequence.

Note: I could make this an Alias in my .gitconfig file, but doing it longhand that feels better.

Subscribe

If you enjoyed reading this and want a monthly roundup of my articles delivered to your inbox, just enter your email below.

I don’t collect any data on when, where or if people open the emails I send them. Your email will only be used to send you newsletters and will never be passed on. You can unsubscribe at any time.

More posts

Here are a couple more posts for you to enjoy. If that’s not enough, have a look at the full list.

  1. Using Pandoc to convert Markdown to Jira’s Textile in Sublime Text

    It’s a real pain that Jira’s plain text input isn’t Markdown. Here’s how to I write in Markdown and export to Jira’s version of Textile.

  2. Apple dials back the Safari 15 for macOS redesign

    The ultra-condensed tab bar in the up-coming Safari for macOS has been reverted in the betas; it’s now just an option in Safari’s Preferences.