Git命令 - " - "的意义和" - "

时间:2015-11-17 10:32:09

标签: git git-commands

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

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

有时我可以互换使用这些。例如:-l--long让我更加困惑。

1 个答案:

答案 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样式,那么最好支持至少最常见选项的单字母等价物。