@DrHyde @b0rk also, I think git is _particularly_ prone to this, because it's so broad. There are a zillion outlying git features and subcommands, and each one is useful for _something_, but a lot of them are pretty much independent of each other – you don't have to learn lots of them at once, or learn one in order to use another.
So the only way you'd ever learn all of them in advance would be by reading the entire manual … and having a _really_ good memory.