Что делает опция двойной черты [-] при сбросе git?
Я видел такие команды:
git reset e542 -- readme.txt
Я понимаю, что эта команда помещает в индекс содержимое файла readme.txt из commit e542. Но что это --
вариант там делаешь?
Страница man git reset перечисляет его как необязательный для первых двух форм, но я не смог найти, что это значит.
git reset [-q] [<commit>] [--] <paths>…
git reset (--patch | -p) [<commit>] [--] [<paths>…]
2 ответа
--
отделяет имена веток от имен файлов, в случае, если есть какая-либо неоднозначность (если у вас есть ветка и файл с тем же именем). Если нет неясностей, вам не нужно --
,
Также, как упомянул Джонас Велицкий, это позволяет использовать имена файлов, начинающиеся с -
; в противном случае они будут интерпретированы как параметры командной строки.
Я считаю, что это просто отделяет коммит (который является необязательным параметром) от списка путей. Если бы у вас не было разделителя, не было бы надежного способа определить, является ли первый параметр путем или коммитом.