tig is great. One of my favourite features is that you can define your own shortcuts in the global .gitconfig. For example, when I press `=` it creates a fixup commit for the selected commit. That, together with the ability to stage single lines completely changed my workflow.
Recently, I have become a bit lazy and use PyCharm to stage and commit changes. Its diff viewer also supports staging single lines but its better integrated. For example, pressing F4 jumps to the current file/line in the main window.