2013-11-23 4 views
-1

Почему мы помещаем - перед некоторыми переключателями в git и -- перед другими? Есть ли какое-либо эмпирическое правило, которое поможет вам вспомнить, какой из них использовать?поместить - и - - перед переключением в командах git

+0

См. [Одиночные тире '-' для односимвольных опций , но двойные черточки '--' для слов?] (http://unix.stackexchange.com/questions/21852/single-dashes-for-single-character-options-but-double-dashes-forlwords). –

ответ

2

В довольно последовательной утилите, подобной Git, правило состоит в том, что однобуквенные переключатели: - и более длинные переключатели (актуальные слова) начинаются с --.

2

Как правило, Git использует типичные флаги стиля Linux. Это один штрих для флагов с одним символом, например -s или -u, и два тире для флагов с несколькими символами, например --soft или --hard.

4

Это на самом деле общая функция Unix-подобной системы, которая стала распространенной с приложениями GNU: опции одиночной тире - это «короткие» варианты, а опции с двойной тире - «длинные». Короткие варианты обычно можно комбинировать, например, git checkout -qf означает то же, что и git checkout -q -f. См., Например, Using getopts in bash shell script to get long and short command line options. Различные языки имеют библиотечные процедуры для синтаксического анализа коротких и/или длинных опций (например, C имеет getopt() и часто вариант с номером getopt_long(); Python's argparse module имеет прямую поддержку как для коротких, так и для длинных опций).

Таким образом, однобуквенные флаги опций имеют одну тире, а более длинные, похожие по имени опции имеют два.

Хотя это не то, о чем вы просили, другая общепринятая практика заключается в том, что сама по себе (без последующей длинной опции) обрабатывается -- как конец опций. Это позволяет вам указывать файлы с именем -file без использования типичного альтернативного обходного пути ./-file. Git принимает и расширяет эту идею немного: -- отделяет такие вещи, как имена ветвей от таких вещей, как имена файлов. Если вам посчастливилось иметь файл с именем master в филиале также под названием master, вы можете сделать:

git checkout master 

назвать отрасли, а также:

git checkout -- master 

назвать файл. (Это очень полезно при написании сценариев оболочки или git-псевдонимов, где вы не хотите, чтобы аргумент имени файла был случайно выбран как имя ветви.)

Смежные вопросы