I find I just use tab-completion. I'm quite used to writing the names of the files in my project anyway, and find the "hard core" interaction through the shell quite pleasant, it simply is in line with what you tend to do in the shell.<p>Micro-plug: if you use the Geany editor/IDE, you might like <a href="https://github.com/unwind/gitbrowser" rel="nofollow">https://github.com/unwind/gitbrowser</a> to make switching between files (opening them if necessary) by substring-searching the filename from the Git repo pleasant.
Neat little tool. For add's though probably 99% of the time I use 'git add -p' Not only do I not have to type the file names, but I get a quick little final code review to boot which seems win all around.
Looks similar to scm breeze : <a href="https://github.com/ndbroadbent/scm_breeze" rel="nofollow">https://github.com/ndbroadbent/scm_breeze</a><p>But scm breeze (which I use every days) seems much more powerful.
Interesting and useful if your are using the command line version of git.<p>However since starting to use Magit (git mode for Emacs) I never feel the need to drop to the console in order to interact with my git repo because Magit has such a brilliant interface. I encourage people to try out!
This is nice but to be honest I'm surprised it's not a feature already built into git. It seems strange that for a command line tool the fastest way to interact with files is to use the mouse to double click and then right click . Maybe you could submit a patch to git itself?
The case of adding some files or bits of files is one of the few cases where I spin up a GUI tool. I find git-cola is excellent at this.<p>The other GUI case is using qgit when browsing logs in detail.