Что делает опция двойной черты [-] при сбросе 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 ответа

Решение

-- отделяет имена веток от имен файлов, в случае, если есть какая-либо неоднозначность (если у вас есть ветка и файл с тем же именем). Если нет неясностей, вам не нужно --,

Также, как упомянул Джонас Велицкий, это позволяет использовать имена файлов, начинающиеся с -; в противном случае они будут интерпретированы как параметры командной строки.

Я считаю, что это просто отделяет коммит (который является необязательным параметром) от списка путей. Если бы у вас не было разделителя, не было бы надежного способа определить, является ли первый параметр путем или коммитом.

Другие вопросы по тегам