====== tig - a curses-based UI for git ======
''tig'' is pretty handy for exploring other branches and cherry-picking individual commits from other branches onto your current branch.
First, let's add a special keyboard alias for "cherry-pick with sign-off" to your user's ''.tigrc'' file. Create ''~/.tigrc'' with the following content:
bind generic C !git cherry-pick -s %(commit)
bind generic c !git cherry-pick %(commit)
Now, let's try cherry-picking a few commits from a different branch (//cool-stuff//) into your current branch.
tig cool-stuff
A list of the commits in //cool-stuff// will be displayed in reverse chronological order. The commits that are not found in your current branch should stick out:
2012-08-28 17:40 Dan Scott M─┐ [rel_2_3_mergery_tpac] [conifer/user/dbs/rel_2_3_mergery_tpac] Merge branch
2012-08-27 15:48 Dan Scott │ o Remove old version of style.css.tt2
2012-08-27 15:41 Dan Scott │ o Bump HRSRH up to 15px font size
2012-08-27 13:55 Dan Scott │ o Fix HSN link from topnav logo
2012-08-27 12:17 Dan Scott │ o Update HRSRH links and logos
2012-08-27 11:56 Dan Scott │ o University of Sudbury basic skin
2012-08-28 17:33 Dan Scott M─┐ Merge branch 'user/dbs/rel_2_3_mergery' of git.evergreen-ils.org:contrib/Conifer into rel_2_3_mergery_tpac
2012-08-28 17:03 Dan Scott │ o [rel_2_3_mergery] [conifer/user/dbs/rel_2_3_mergery] Use CSS selectors that new XUL can live with
You can move up and down the list of commits using standard VI keybindings (''j'' and ''k'') or the arrow keys.
===== Cherry-picking with sign-off =====
As you added the keybinding to ''.tigrc'', when you hit **''C''**, then the commit in question will be cherry-picked with your sign-off from the branch you're browsing onto your current branch. You can do this for multiple commits in a single branch - a pretty easy way of avoiding those ugly merge commits, no?