I'm not sure if this is helpful to you, but I can tell you what worked for me.
1) Understand the core concepts of blobs trees and commits (easy)
2) Start small. A small project that you start from scratch, with only one or two people involved. Up until this point it's pretty much like svn (linear).
3) Keep working locally in the beginning.
4) Get familiar with branching and merging, and with what branches, tags, remotes, etc represent. I tried avoiding conflicting merges at first (I used --no-commit a lot so I could see what was happening), and eventually I understood how merges work well.
5) Make mistakes, and understand how to rewrite history - undoing, rebasing, etc.
6) Start working with remotes, submodules, etc etc.
My point is that I started using git on real stuff, even with the little knowledge I had - and improved my understanding bit by bit. I felt it came quite naturally - everytime I felt I needed something, I just looked up if there was a feature for what I needed to do. There usually are; I discovered some really neat features this way (f.e. git stash).
Looking back I don't think learning git was hard: it was pretty logical and consistent, and the learning curve wasn't steep because you could start out with a small subset of the features/commands, and use more and more as you go.