- There's obviously the fantastic Magit (https://github.com/magit/magit) which is an Emacs Plugin but you can configure your Emacs start up just with Magic and nothing else so that Emacs is only used as a TUI Git client. I did this for a while.
- There's GitUI written in Rust (https://github.com/extrawurst/gitui) I did use this for a long time but recently switched over to LazyGit for the better Vim bindings and having more features
- LazyGit (https://github.com/jesseduffield/lazygit) is what I'm using right now and I'm mostly happy
I actually wrote my own in C some years ago called Gitsi (https://github.com/terhechte/gitsi).
One thing that I added that (as far as I know) none of the others have and I sorely miss is VIM number based movements. So you can say 4j and jump 4 selections down. This makes it much faster (for me) to jump to the one file I'd like to commit. I ultimately stopped developing Gitsi because I didn't have the time to implement all the features others had readily available.
I do prefer TUI based Git clients to full blown GUI apps because of the keyboard movement. So I can quickly enter do something and exit, while staying in the terminal