在Git实际命令之前传递的所有参数都是开关:请参阅docs/git
git [--version] [--help] [-C <path>] [-c <name>=<value>]
[--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
[-p|--paginate|-P|--no-pager] [--no-replace-objects] [--bare]
[--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
[--super-prefix=<path>]
<command> [<args>]
在使用<command> [<args>]
前,您可以查看所有可能的开关。
--global
是git config
命令的开关,如此处所示,而不是单独使用"git
"命令。
"switch"一词是在Commit 0a8365a;2005年5月,Git v0.99中引入的
diff-tree
:修复并扩展参数解析我们使用"
--
"来标记命令行开关的结尾,而不是"-
"。
这符合双破折号命令行约定,正如我在这里解释的那样,如果非选项参数以连字符开头,则此功能很有用。
-- optional separator, followed by arguments
v
git -p config --global -- user.name
^^ ^^^^^^^^
| |_ switch for the git config subcommand.
|
switch for the git command
--global
是在实际命令(config
)之后传递的,这不应该像你提到的那样在任何Git实际命令之前传递--global
吗? - user7110415git config
的 --global
https://git-scm.com/docs/git-config#Documentation/git-config.txt---global。`git --global` 不存在。 - VonCgit config --global
,开关是在命令之后吗? - user7110415git
本身的开关,而是针对 git config
命令的开关。git
本身没有 --global
开关。正如我提供的链接所述,git config
命令有:https://git-scm.com/docs/git-config#Documentation/git-config.txt---global - VonCgit config
是一个命令?难道不是命令只有一个单词(例如 config
是一个命令)吗?即使 git config
是一个命令,--global switch
仍然在命令之后,而不是在命令之前。 - user7110415通常,以连字符开头的命令行参数被称为开关。 (但即使有了这个“定义”,在这种情况下,我认为“开关”一词是行话而不是技术术语。)
“开关”通常会更改命令的某个次要方面或其操作模式。
由于git
命令具有许多子命令,因此您可以拥有适用于命令总体的开关(这些是git
和子命令之间的开关),以及适用于子命令的开关(这些发生在子命令之后)。
考虑到您的示例
git -p config --global user.name "Rick"
-p
是应用于命令的开关;
--global
是应用于子命令的开关。
--global
前缀,而其他参数不需要呢?例如--user.name
? - user7110415git switch
命令,用于切换分支。这不是 OP 所询问的内容。 - Keith Thompsonuser.name
是一个参数(没有--
),而不是选项或开关--xx
。因此,没有--user.name
,因为user.name
不是一个选项。 - VonC