【问题标题】:Git Flag Syntax: why do some flags have -one dash and some have --two?Git标志语法:为什么有些标志有-one破折号而有些有--two?
【发布时间】:2013-08-09 07:33:25
【问题描述】:

我正在学习Git,一直在unabletofindanyexplanationoftheflagsyntax

我不是指“裸双破折号”

--

正如我们所知,这表明后面的内容不是一个选项。我指的是各种实际标志,有时有一个破折号,有时有两个。

git log -2 -p -U1 --graph

一个破折号和两个破折号的标志有什么区别?双破折号表示什么?

例如,以下两个标志是相同的,(according to this):

-q
--quiet

为什么破折号的数量不同?如果我输入了错误的号码怎么办?

【问题讨论】:

  • 或者那些不需要破折号的选项(即 git stash list)呢?

标签: git syntax flags


【解决方案1】:

我的理解是 git 遵循标志的“标准”Linux 约定。那就是:

  • 短划线表示“短”标志:通常是一个字符标志,但有时标志带有单个字符,然后是表示标志参数的其他字符(例如git log -SFoo,其中Foo-S 标志)。这些标志可能是也可能不是其他更长标志的缩写形式。
  • “长”标志的两个破折号:多字符标志,通常是英文单词。如果这些标志接收参数,则通过= 符号将其与标志分开(例如git log --author=Peter)。

这就是“为什么”:这是嵌入在 Linux 世界中的约定。 Git来自这个世界,所以它遵循约定。 “两个破折号代表长旗,一个破折号代表短旗”规则应该指导您使用多少破折号作为旗标。

至于为什么会有重复的短标志和长标志,例如--quiet-q,只是为了提供助记方便或简洁的选择。 --quiet 更容易记住,但如果您习惯了-q,则可以更快地输入和解析。例如,我输入git commit -m "...blah" 的频率太高,如果我每次都必须输入git commit --message='...blah' 来将命令的长度加倍,我会很紧张。

我没有遇到任何 git 标志在给定两个破折号和一个破折号的情况下表现不同,所以通常如果您为一个破折号标志输入两个破折号或反之亦然,没有什么不可挽回的坏事发生这种情况,git 只会抱怨你的标志而不做任何事情。

当然,git 有大量的命令,每个命令都有大量的标志,因此所有这些规则都可能存在例外。不过他们通常应该持有。

【讨论】:

  • 脚本中也经常首选长标志,因为阅读脚本的人会立即了解--quiet 的作用,但可能需要查看-q 之类的内容才能理解它的作用。
  • 可以捆绑传统的短标志;例如ls -ltr 等价于ls -l -t -r。但 git 似乎不支持这一点。
  • @KeithThompson 一些 git 命令确实支持捆绑,例如 git grep。不过,我不知道支持或不支持给定命令的理由。
  • @Peter:我怀疑没有理由。
猜你喜欢
  • 2014-09-15
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-24
  • 2014-12-08
  • 2016-07-29
  • 1970-01-01
相关资源
最近更新 更多