Git命令中的“switch”是什么意思?

3
我正在阅读一本书,其中展示了git命令的语法如下: enter image description here enter image description here 那么我的问题是,--global也算一个开关吗?开关也可以是参数吗?
更新:
该书称--global是一个开关,因此我认为-a也是一个开关,我们可以使用git help -a来使用它,但是我们不能像这样使用git -a help,这应该是根据语法应该有效的吧?

这是一个参数,你告诉 Git 要更新的目标配置是什么(与全局安装依赖项不同)。 - ffflabs
@ffflabs 为什么这个参数需要加上 --global 前缀,而其他参数不需要呢?例如 --user.name - user7110415
1
跨站点重复:https://superuser.com/q/1074694 - tripleee
Git 最近添加了一个 git switch 命令,用于切换分支。这不是 OP 所询问的内容。 - Keith Thompson
我认为更常见的是称之为“选项”而不是“开关”,但两个术语都在使用中。 - torek
@slowjams,我的回答是否解答了你的问题?user.name是一个参数(没有--),而不是选项或开关--xx。因此,没有--user.name,因为user.name不是一个选项。 - VonC
2个回答

3

在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>]前,您可以查看所有可能的开关。

--globalgit 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吗? - user7110415
@slowjams 不应该这样:它是 git config--global https://git-scm.com/docs/git-config#Documentation/git-config.txt---global。`git --global` 不存在。 - VonC
但是难道不应该在命令之前出现一个开关吗?但是对于 git config --global,开关是在命令之后吗? - user7110415
@slowjams 不是针对 git 本身的开关,而是针对 git config 命令的开关。git 本身没有 --global 开关。正如我提供的链接所述,git config 命令有:https://git-scm.com/docs/git-config#Documentation/git-config.txt---global - VonC
你的意思是 git config 是一个命令?难道不是命令只有一个单词(例如 config 是一个命令)吗?即使 git config 是一个命令,--global switch 仍然在命令之后,而不是在命令之前。 - user7110415
显示剩余7条评论

0

通常,以连字符开头的命令行参数被称为开关。 (但即使有了这个“定义”,在这种情况下,我认为“开关”一词是行话而不是技术术语。)

“开关”通常会更改命令的某个次要方面或其操作模式。

由于git命令具有许多子命令,因此您可以拥有适用于命令总体的开关(这些是git和子命令之间的开关),以及适用于子命令的开关(这些发生在子命令之后)。

考虑到您的示例

git -p config --global user.name "Rick"
  • -p 是应用于命令的开关;

  • --global 是应用于子命令的开关。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接