Ideally, you'd achieve as much as you can with minimal interruption to your main workflow.
With graphical clients, there's some friction, since you have to open the client to the directory you're in; or these interfaces are designed for use mainly with the mouse.
A command line program is right there, especially if you're otherwise using a terminal. -- But, for any commands which require finer things than "add everything", being precise on the command line is generally slow.
To get `git show 14feb20`, or `git add path/to/foo.ext`, it can be quite slow to get those precise values, especially if it involves re-entering a value from the output of a previous command. (It will still be slow, even if you're using tab-completion or fzf or copy-pasting).
Keyboard-driven interfaces like lazydocker or lazygit avoid those disadvantages.
With graphical clients, there's some friction, since you have to open the client to the directory you're in; or these interfaces are designed for use mainly with the mouse.
A command line program is right there, especially if you're otherwise using a terminal. -- But, for any commands which require finer things than "add everything", being precise on the command line is generally slow.
To get `git show 14feb20`, or `git add path/to/foo.ext`, it can be quite slow to get those precise values, especially if it involves re-entering a value from the output of a previous command. (It will still be slow, even if you're using tab-completion or fzf or copy-pasting).
Keyboard-driven interfaces like lazydocker or lazygit avoid those disadvantages.