Magit has a great mix of direct manipulation of git primitives and good visualization. I think I've learned how git works faster through Magit than I would have from using the CLI. It's really hit a sweet spot for me.
I'm sure you know this, but for the benefit of other readers, pressing '$' in Magit status buffer (and likely bunch of others) pops up a buffer that lists actual commands issued to Git, so you can always check how Magit interaction maps to Git CLI commands.