为什么 -C 的位置在 git 命令中很重要?

Don*_*lon 11 options git arguments

以下工作:

git -C ~/dotfiles status
Run Code Online (Sandbox Code Playgroud)

但这失败了:

git status -C ~/dotfiles
Run Code Online (Sandbox Code Playgroud)

为什么是这样?

l0b*_*0b0 31

这是因为它-C是一个全局选项,不“属于”status操作。这是一种常见的模式,产生的概要如下所示:

command [global options] action [action-specific options]
Run Code Online (Sandbox Code Playgroud)

git --help列出 Git 的全局选项,并man git详细介绍。

  • 值得一提的是,每个程序都定义了自己的选项语法,因此不应将其视为有关选项的通用规则。有的可以随意移动,有的只能出现在命令行的特定位置,有的只能按特定顺序或特定位置出现。 (18认同)
  • 这些决定通常由程序用来解析其参数的库做出。例如,GNU `ls`(使用 GNU `getopts`)将 `ls foo -l` 中的 `-` 视为长输出选项。另一方面,BSD `ls`(使用不同的库)将其视为文件名参数。 (3认同)