Git internals PDF (Scott Chacon) http://peepcode.com/products/git-internals-pdf
"Getting Git" screencast (Scott Chacon) http://blip.tv/scott-chacon/git-talk-4113729
Interactive Git cheatsheet (Andrew Peterson, NDP Software) http://www.ndpsoftware.com/git-cheatsheet.html
Once you understand git, the man pages, docs at kernel.org and cheatsheets are a much easier read. My go-to cheatsheet is now , which is actually more of a visualization of commands to use to move between git's different areas.
I must admit, I still need to Google every now and then for things that are counterintuative in git (e.g. removing a submodule) and normally end up on StackOverflow.
Once I read that, I never had to look at any git intro tutorials again.
Part 1 - http://lostechies.com/joshuaflanagan/2010/09/03/use-gitk-to-...
Part 2 - http://lostechies.com/joshuaflanagan/2010/09/03/use-gitk-to-...
I'm surprised how few tutorials mention Gitk.
easygit is git with sane defaults and better error messages. It uses real git commands, so you don't need to unlearn anything when graduating to git. It has extra sanity checks (like checking for unstaged changes when committing). The help messages are more verbose and use more consistent terminology than git's man pages. For example, easygit always uses the term "staged" instead of "index/staged/add/hard/soft/mixed/cached/HEAD/etc." And `eg revert` behaves the same as Perforce, SVN, and Mercurial revert.
The fact that file checkouts and branch creation shares underlying mechanics have nothing to do with the UI, it'd make a lot more sense to create new branches with for instance the git branch command, and checkout files with the git checkout command.
Having said that, I don't think the git UI is horrible at all. I found learning the basics of git rather easy, that doesn't mean the UI can't be improved on further, though.
git revert is the "undo committed change" command.
git reset is the "discard uncommitted change" command (what is called "revert" by Subversion, Mercurial, Perforce, Bazaar, Darcs, Fossil, and SVK).
I also recommend to heavily use gitk while learning, just use it to see what happens after you do something in your test repositories. It's very enlightening.