In the general case, I agree. But working with Git you will very probably have to learn what's going on beneath the abstraction sooner-or-later (ie. when I'm working on a team larger than 1 person and the repo becomes a mess). So writing abstraction layers just increases the number of things that need to be learned.