Git Flag语法:为什么有些标志有一个破折号而有些有-two?

bre*_*ine 15 git syntax flags

我学习Git和一直无法 找到 任何 解释 标志 语法.

我不是指"裸双破折号"

--

正如我们所知,这表明以下内容不是一种选择.我指的是各种实际的旗帜,有时会有一个短划线,有时会有两个.

git log -2 -p -U1 --graph

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

例如,以下两个标志是相同的(根据此):

-q
--quiet
Run Code Online (Sandbox Code Playgroud)

为什么不同的破折号?如果我输错了怎么办?

Pet*_*ter 16

我的理解是git遵循标准的"标准"Linux约定.那是:

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

这就是'为什么':它是嵌入Linux世界的惯例.Git来自这个世界,所以它遵循惯例."长旗的两个破折号,一个用于短旗的规则"规则应指导您使用多少破折号作为旗帜.

至于为什么有重复的短标志和长标志,例如--quiet-q,它只是提供助记符或简洁性的选项.--quiet更容易记住,但-q如果你习惯了它,可以更快地输入和精神解析.例如,我git commit -m "...blah"经常打字,如果每次进入时我不得不加倍我的命令长度,那就会让我感到紧张git commit --message='...blah'.

我没有遇到过任何git标志,它们的行为有两个短划线和一个短划线,所以通常如果你为一个破折号标志输入两个破折号,反之亦然,没有什么不可挽回的坏事会发生,git会抱怨你的旗帜和没做什么.

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

  • 长标志在脚本中通常也是首选,因为有人立即阅读脚本时很清楚`-quiet`的作用,但是`-q`之类的东西可能需要查找才能理解它的作用. (4认同)
  • 传统上可以捆绑短旗; 例如`ls -ltr`相当于`ls -l -t -r`.但是git似乎并不支持这一点. (4认同)