I don't know what it is called, but it forces what comes after to be interpreted as a filepath.
This is not git specific, but a common convention for CLI tools. Try running:
> touch -- -i foo
> rm -- -i foo
And compare what happens without the "--".