在学习git时,我对何时使用单个破折号和双破折号感到困惑。用法有什么显着差异?
git ls-tree [-d] [-r] [-t] [-l] [-z] [--name-only] [--name-status] [--full-name] [--full-tree] [--abbrev[=<n>]] <tree-ish> [<path>…]
有时我可以互换使用这些。例如:-l
和--long
让我更加困惑。
答案 0 :(得分:3)
Git接近POSIX Utility Argument Syntax,但也使用--arg=xx
(GNU)
This document "Standards for Command Line Interfaces"恢复使用的惯例:
在最初的Unix传统中,命令行选项是单个字母,前面有一个连字符。
不带以下参数的模式标记选项可以组合在一起;因此,如果-a
和-b
是模式选项,则-ab
或-ba
也是正确的,并启用两者。
选项的参数(如果有)跟随它(可选地由空格分隔) 在此样式中,小写选项优先于大写。当您使用大写选项时,它们是小写选项的特殊变体的良好形式。最初的Unix风格是在缓慢的ASR-33电传手机上演变而来的,它使得简洁成为一种美德;因此单字母选项。
按住shift键需要实际操作;因此,对小写的偏好,以及使用“-
”(而不是更符合逻辑的“+”)来启用选项。GNU样式使用前缀为两个连字符的选项关键字(而不是关键字字母)。多年后,当一些相当复杂的GNU实用程序开始耗尽单字母选项密钥时(这构成了症状的补丁,而不是根本疾病的治疗方法)。 它仍然很受欢迎,因为GNU选项比旧款的字母汤更容易阅读 如果不分隔空格,则无法将GNU样式选项组合在一起。选项参数(如果有)可以用空格或单个“
=
”(等号)字符分隔。选择了GNU双连字符选项引导程序,以便可以在同一命令行上明确地混合传统的单字母选项和GNU样式关键字选项。
因此,如果您的初始设计只有很少且简单的选项,那么您可以使用Unix风格,而不必担心如果您需要在以后切换到GNU样式时导致不兼容的“标记日”。
另一方面,如果您使用的是GNU样式,那么最好支持至少最常见选项的单字母等价物。