Magit (Emacs) deserves a mention here: https://magit.vc/. It's the epitome of text based "gui" for any git operation. It's so good that any real Git GUI also doesn't come close.
Yeah it's probably the best way to interactively stage only changes you want to commit (`add --patch`)