Neither --
nor .
are git-specific:
The first --
argument that is not an option-argument should be accepted as a delimiter indicating the end of options. Any following arguments should be treated as operands, even if they begin with the '-'
character.
(from https://unix.stackexchange.com/questions/11376/what-does-double-dash-mean-also-known-as-bare-double-dash/11378).
.
is the current directory.
git checkout is for switching between branches
If you look at https://git-scm.com/docs/git-checkout, this command has the form
git checkout [<tree-ish>] [--] <pathspec>…
so it
Overwrite[s] paths in the working tree by replacing with the contents in the index or in the <tree-ish>
(most often a commit).
"Paths" are .
(the current directory) and "the <tree-ish>
" is HEAD
(the current commit Git points to), because you didn't specify another.