--
separates branch names from file names, in case there is any ambiguity (if you have a branch and a file with the same name). If there are no ambiguities, you don't need the --
.
Also as mentioned by Jonas Wielicki, this allows for file names that start with a -
; these would otherwise be interpreted as command-line options.