User Tools

Site Tools


dev:git:tig

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?

dev/git/tig.txt · Last modified: 2022/02/10 13:34 by 127.0.0.1

Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki

© 2008-2022 GPLS and others. Evergreen is open source software, freely licensed under GNU GPLv2 or later.
The Evergreen Project is a U.S. 501(c)3 non-profit organization.