Magit can do most common actions with one or 2 strokes, like `cc` for commit, `ca` for amend etc. Push, pull fetch etc work like a breeze and wont lock up emacs till its complete.
Sometimes I forget the keys, then I either enable menu bar mode to quickly look it up or switch to eshell for a while
Yeah, once I'm in magit-status, I type "g" for update, "fa" for fetch all, and if I need to commit, "S" to add all changes, C-u S to add all unstaged files, and using "n" and "p" to move through the list, I use "4" and "2" to toggle between showing/hiding changes per file (sometimes "3" if I want to see only part of a file's changes). When Im' done, I do "c" to type a commit message, and "cc" to commit. Often I need to fix a commit message typo, so "c" and "ca" lets me amend. Then I just type "PP" to push my changes! If I need to force-push because of an amended commit that I pushed 2 seconds ago, I'll do "P-fP". And interactive rebasing is really easy too, with "E". But yeah I've already gone on too long here.
The central part of magit is `magit-status'. You do most of the things from there. It even allows you to stage small parts of a diff (like git add -i) simply by selecting the part in the status view and staging it.