When you run `git log foo` foo can be, from git-log(1),
`[<revision range>] [[--] <path>...]`, so, may things.
- A "revision range" described by gitrevision(7) (don't got there unless
you have a few hours, or already lost your sanity), which can be :
* a commit hash,
* a tag
* a branch,
* a ref name
* a "describe output"
* and many other ways to describe revisions
* a range made by any of the above
- An existing path.
When it can't find any of those, git figures out that you meant
something else and made a typo, and exits.
If you really meant a path, you have to run `git log -- foo`. Then git
knows that you meant a path and only a path, it will then assume that
you knew what you meant, and will go look in the history.