Git 文档中有错误?

Errors in Git Documentation?

根据 this SO question, Git manpages are converted automatically from the Git docs (without using mdoc or groff), so some usage syntax and manpages do not adhere to POSIX Utility Argument Syntax.

例如:

man git-config

列表

git config [<file-option>] [type] --add name value

在“概要”下(根据 POSIX 语法,这应该在名为“用法”的标题下,Git 联机帮助页中“描述”标题下的内容应该在标题下称为“Synopsis”),并且 namevalue 应该出现在 <> 中以表明它们是占位符。

比较混乱,

man git-rebase

列表

git rebase [-i | --interactive] [<options>] [--exec <cmd>]
               [--onto <newbase> | --keep-base] [<upstream> [<branch>]]
       git rebase [-i | --interactive] [<options>] [--exec <cmd>] [--onto <newbase>]
               --root [<branch>]
       git rebase (--continue | --skip | --abort | --quit | --edit-todo | --show-current-patch)

根据 POSIX 语法表明 git rebase 可以在没有任何选项或参数的情况下 运行 成功,但事实并非如此。

由于 Git 文档不包含任何有关如何阅读命令行用法语法的部分,我如何理解 git rebase 的用法语法? <branch> 是否应该放在 [] 之外,以正确表明它实际上是命令的 non-optional 参数?

Git 努力在其手册页中使用准确的语法描述,尽管可能有人犯了错误。 [] 语法表示可选参数,括号表示需要其中一个选项的用法。这可能是也可能不是 POSIX 的做法,但一般来说,每个 Unix 系统在如何格式化手册页方面都有略微不同的标准,因此应该会有一些分歧。如果您强烈希望进行更改,可以在 Git 列表中提出这样的更改,然后发送一些补丁。

正如 jthill 指出的那样,可以在没有选项或参数的情况下使用 git rebase。在您的上下文中,这可能有用,也可能没有用。就个人而言,我更喜欢在使用 Git 变基时更加明确,所以我不使用该语法,但这是个人偏好;该命令可以这样使用,即使我选择不这样做。