- 短いオプション(ハイフン1つ(
-
)に続く) - 長いオプション(ハイフン2つ(
--
)に続く)
短いオプションはおまとめできる(割と普通)
-a -b
は -ab
とできる。
できるけど、おまとめしないのを推奨。
長いオプションは、おまとめはできない(割と普通)
長いオプションは 前に no- が付けられる
--hogehoge
とあったとき --no-hogehoge
とできる。
マニュアルページに結構書いてあるけども、書いてないのでもぢつは指定できる。意味のある動作になるかどうかは実装依存である。
例えば git add --patch --no-patch
とすると、--patchの機能を取り消す。
git add -p --no-patch
はOKである。
git add -p -no-p
はNG(短いオプションには no- 形式は無いのである)
no- とあるものは no- を外す事ができる。意味のある動作になるかどうかは実装依存である。
ブール値の長いオプションは、「no-」を前に付けることで「否定」(または「未設定」(unset))にできます。
また、ブール値以外の長いオプションは、no- を前に付けることで設定を解除(unset)できます(たとえば、文字列をNULLに設定し、整数を0に設定します)。
長いオプションは省略形を許す事
一意であるかぎり短くできる。例えば --option
を --opt
とかできる。
その場で使うにはこれでよいが、シェルスクリプト等で使う場合は、将来gitで一意にならないような似た名前のオプションが実装される可能性が常にあるのにそういうことは禁止である。まじめにちゃんと書け。
当該コマンドのソース(C言語)に PARSE_OPT_KEEP_UNKNOWN が指定してあるとできない。
注意
通常は parse-option API を使うのでこの通りなのだけども、フルカスタムとか parse-option API を使わないとかも可能なので、最終的にはコマンドごとの実装依存である。
詳しくは
解説
実装
※Examplesの test-parse-options.c は t/helper/ フォルダ内にあります。