I think I take your point, but we should only put up with having to learn necessarily complicated things. So to the extent that the Git interface reflects a powerful and flexible internal model, I'm with you. But Git is also unnecessarily complicated. The commands are inconsistent and hard to remember until you have them by rote. That's a failure of software design.