Ответ 1
Я понимаю, что git следует за стандартным соглашением Linux для флагов. То есть:
- одна черта для "коротких" флагов: обычно один символ, но иногда флаги с одним символом, а затем другие символы, которые представляют собой параметр для флага (например,
git log -SFoo
, в которомFoo
является параметром для-S
). Эти флаги могут быть или не быть сокращенными формами других более длинных флагов. - Две тире для "длинных" флагов: многосимвольные флаги, которые обычно являются английским словом. Если эти флаги получают параметры, они отделяются от флага знаком
=
(например,git log --author=Peter
).
Это "почему": это соглашение, встроенное в мир Linux. git происходит из этого мира, поэтому он следует за конвенцией. Правило "два тире для правила с длинным флагом, одно для короткого флага" должно указывать на то, сколько тире используется для флага.
Что касается того, почему существуют двойные короткие и длинные флаги, такие как --quiet
и -q
, он просто предоставляет возможность либо мнемонического удобства, либо краткости. --quiet
легче запомнить, но -q
быстрее набирает и мысленно анализирует, если вы привыкли к нему. Например, я набираю git commit -m "...blah"
так часто, что это будет нервничать, если мне нужно удвоить длину моей команды каждый раз, введя git commit --message='...blah'
.
Я не встречал никаких флагов git, которые ведут себя по-разному, учитывая две тире и одну тире, так что обычно, если вы введете две тире для флага с одним тире или наоборот, ничего непоправимого плохого не произойдет, git будет просто жаловаться на ваши флаги и ничего не делать.
Конечно, git имеет огромное количество команд, каждый из которых имеет огромное количество флагов, поэтому есть исключения из всех этих правил. Они обычно должны держать.