From my experience, most people issues with git is because they do not really understand how it works (or try to apply what they've seen with other cvs).
Now I agree that having to understand internals might be seen as an engineering failure, however
* internals are pretty quick to cover
* for students learning software development, I thought it would be interesting to see that you can have very few low-level objects that offer powerful high-level actions