Can someone please explain to me why git-checkout is overloaded so that you can get a branch (git checkout master) and also restore a file from the current branch HEAD (git checkout hello.c)? It seems like a misplaced overload. Wouldn’t git-revert be a better overload?

Anways, this confused the hell out of me this morning for some reason.