I’m a big fan of Git, but I’m not such a big fan of most UIs for it, especially the ones integrated into IDEs. I find them convoluted and confusing. They try to map some generic “VCS” language onto the commands, or try to hide too much, making it hard to understand what’s going on. Or worse: they’re written in Tcl/Tk… In short, I don’t trust ‘em. So command line it is for me, which is fine because I love my command line. Except once in a while, it’s nice to be able to see a “graphical” view of your history, or to have a bit of help when preparing your commits. Enter tig. tig is a text-mode, ncurses-based UI for git. In short, it is the mutt to your Outlook, the Vim to your Emacs, the w3m to your Firefox. I use it all the time, but I haven’t seen many people using it so I thought I’d publicize it a bit. So, why is it awesome? It’s insanely fast Seriously. Three letters to type, and it instantly shows up. No fussing around with your mouse, or alt-tabbing to another window, or waiting for a JVM to start. It’s there at your fingertips whenever you need it. It literally loads the 50,000 commits of the JIRA codebase in a fraction of a second. History view The default view when launching tig is the history view. It’s basically a git log, with a bit of ASCII-art to represent the history (you can hide the graph with g). Without any argument, it displays the current branch. You can also pass it the name of a branch, or --all for all branches. You can also pass it a range of commits as git log would expect (e.g. tig master..branch). You can navigate through the commits with arrow keys or j/k. Use the / key to search (match is done on summary or author). Pressing Enter on a commit opens that commit in a split diff view. You can then navigate in the diff view using the j/k keys. At the beginning of the diff is the list of files that the commit touched. If you select one of them and press Enter, you will directly jump to the beginning of that file in the diff. Press q to close the diff view (and press q a second time to quit tig). If you press t on a commit in the history view, you will open the tree view. In this view, you browse the content of your repository in exactly the state it was at that point in time (just use the arrow keys and Enter), without having to do a git checkout. Status view The is the killer feature in my opinion, and the one I use the most. If you start it with tig status, or if you press shift-S in the main view, you will go to the status view. This is like git status, but interactive. You can see the files that you’ve modified and staged, the files you’ve modified but haven’t staged yet, and the files [...]