Every explanation of git I have seen starts by explaining that git is cool because branches are just pointers and then talks about the index/staging area. If you don't understand that then you aren't going to be writing code worth committing anyway, are you? A software developer that doesn't understand reference semantics?