Git Smart - Painless git pulling and merging

I don't mean to imply that git pulling and merging is painful, because it isn't. I just wanted to showcase a pretty nice gem called git-smart. You can install it using gem install git-smart.

What this gem does is pretty simple, it attempts to do the "right" thing depending on the situation. I'll run through a few of the commands:

git smart-pull

You'll most likely be using this one the most. When you use it instead of an ordinary git pull it will attempt to perform some additional logic to see if it should merge or rebase. Generally it will merge or just fast-forward, but if both your local and remote branch have moved on it will issue a rebase. Another nice thing about this is that it will automatically stash and pop your changes while performing the update if necessary.

git-smart annotated source

git smart-merge

This does more or less what git smart-pull does, but without fetching. It will perform a non-fast-forward merge, and will also automatically stash/pop your changes if necessary. Nothing extraordinary, but it nice to see the extra information about the branches and have the auto stashing.

git-merge annotated source

git smart-log

This is just a simple wrapper around git log. What makes it special is that the log makes visualizing branches and merges easy since it displays the "railroad tracks" for the commits. Another git must-have from Ben Hoskings.

git-log annotated source

It is definitely worth checking out, it should make your life a little more efficient.