Git 命令——“-”和“--”的意义

Ram*_*Ram 3 git

在学习 git 时,我对何时使用单破折号和双破折号感到困惑。在用法上有什么显着差异?

git ls-tree [-d] [-r] [-t] [-l] [-z] [--name-only] [--name-status] [--full-name] [--full-tree] [--abbrev[=<n>]] <tree-ish> [<path>…]

有时我可以互换使用这些。例如:-l--long这混淆了我更多。

Von*_*onC 5

Git 接近POSIX 实用程序参数语法,但也使用--arg=xx(GNU)

本文档“命令行接口标准”很好地恢复了使用的约定:

在最初的 Unix 传统中,命令行选项是单个字母,前面有一个连字符
不接受以下参数的模式标志选项可以组合在一起;因此, if-a-b是模式选项,-abor-ba也是正确的并启用两者。
选项的参数(如果有)跟在它后面(可选地用空格分隔)。
在这种风格中,小写选项优先于大写。当您使用大写选项时,它们最好是小写选项的特殊变体。

最初的 Unix 风格是在缓慢的 ASR-33 电传打字机上演变而来的,这使得简洁成为一种美德;因此是单字母选项。
按住shift键需要实际的努力;因此偏好小写,并使用“ -”(而不是可能更合乎逻辑的“+”)来启用选项。

GNU 样式使用以两个连字符开头的选项关键字(而不是关键字字母)。几年后,当一些相当复杂的 GNU 实用程序开始用完单字母选项键(这构成了针对症状的补丁,而不是治愈潜在疾病的方法)时,它才发展起来。
它仍然很受欢迎,因为 GNU 选项比旧样式的字母汤更容易阅读。
GNU 风格的选项不能在不分隔空格的情况下组合在一起。选项参数(如果有)可以由空格或单个“ =”(等号)字符分隔。

选择了 GNU 双连字符选项前导符,以便传统的单字母选项和 GNU 样式的关键字选项可以在同一命令行上明确混合
因此,如果您的初始设计只有很少且简单的选项,那么您可以使用 Unix 风格,而不必担心以后需要切换到 GNU 风格时会导致不兼容的“标志日”。
另一方面,如果您使用的是 GNU 风格,那么至少为最常见的选项支持单字母等效项是一种很好的做法。