当使用Git时,我何时应该使用一个连字符(-)而不是两个连字符(--)?

3
在Git中,当我执行带有添加的提交时,可以使用
git commit -am "My commit"

当我看到git log的示例或其他大多数情况下我们使用时

git log --online

但我不明白何时使用一个连字符 (-) 或两个连字符 (--)。能否有人解释一下?


1
https://superuser.com/questions/174564/why-are-there-short-and-long-alternatives-for-command-line-options - melpomene
1
-am 相当于 -a -m,而 -a -m 则相当于 --all --message - Ry-
Melpomene,谢谢,这解释了很多问题。 - riju.srk
1
这个问题与Git没有任何关系。-a是Unix/Linux中短选项的一个例子,而--oneline是长选项的一个例子。-am-a-m的组合。 - Asad Moosvi
4个回答

7

---之间没有太大区别。在中,惯例是:

  • 当选项只有一个字母时使用-。在这种情况下,您可以将它们组合在一起:-am等同于-a -m
  • 当选项是一个单词时使用--
  • 没有单词的--用于将选项与参数分开,这样您就可以使用以连字符开头的参数而不将其解释为选项

有些选项具有两种形式(一个字母或一个单词),有些只有其中一种形式。请查看每个命令的帮助以找到它。

git commit -am "My commit"
# is equivalent to
git commit --all --message "My commit"

同时,你也可以阅读这个问题在Super User上的讨论来了解更多信息,正如melpomene所建议的那样。


2
-- 在 Git 中的功能比这个稍微复杂一些,请参见此处。双破折号可以用来区分名称与分支或文件的引用。但通常情况下,你的答案似乎是正确的。 - Tim Biegeleisen
这仍然是经典的约定:使用没有单词的“--”来分隔选项和参数,这样您就可以使用以连字符开头的参数,而不必将它们解释为选项。 - zigarn

4
我注意到在git(以及其他一些工具中)单个连字符用于单个字符选项,而双连字符用于多个字符选项。
这是向程序表明--后面看到的任何内容都应该被视为单个选项。例如,--online指定"online"是一个选项。但如果我们使用-online,则指定o,n,I,i,n,e是选项。
然而,这也取决于我们使用的工具。大多数工具遵循这种模式,我认为这使解析更容易。但我看过一些可以使用单个连字符接受多个字符选项的程序。例如,"java -version"可以正常工作。

2
这在很大程度上取决于你执行的命令。让我们以git-add为例。
它可能的参数如下:
git add [--verbose | -v] [--dry-run | -n] [--force | -f] [--interactive | -i] [--patch | -p]
      [--edit | -e] [--[no-]all | --[no-]ignore-removal | [--update | -u]]
      [--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing]
      [--chmod=(+|-)x] [--] [<pathspec>…​]

我选择这个特别的例子,因为它有一个很好的短长形式旗帜的混合,以及一个奇特位置上的双连字符,我一会儿会讲到。

首先,单连字符和双连字符的关键区别主要取决于命令支持什么。你会注意到在 git-add 中,有一些标志使用双连字符作为更长的命令形式,而单连字符标志则是表达相同命令的更短方式。在这方面,--verbose-v 用不同的语法实现了相同的功能。

这是按照惯例建立的,为了方便起见。

现在,说到双短横线的作用。在基于Unix的系统中,紧随标志后面的双短横线代表命令的结尾,这使您可以指定与任何已存在或位于上方的标志产生冲突的路径。举个例子,如果您有一个(无论出于什么原因)名为-n的文件,则可以通过以下方式将其添加到Git:
git add -- -n

因此,总结一下:
  • 如果支持缩写标志,请使用单破折号。
  • 如果记得命令名称,或者没有其他选择(例如 < code>--ignore-missing),请使用双破折号来表示长标志。
  • 使用双破折号表示命令的结束。

0

使用一个连字符-是为了为最常用的参数使用快捷参数(每个参数一个字母)。

这是Unix的惯例。

它们旨在仅由用户在命令行中使用,因为它们很方便。

在其他地方(特别是在脚本中),请优先选择具有两个连字符--的等效参数,这是一种良好的实践,使其对未来的读者(也许是您)更有意义。

您可以使用参数--help查看每个Unix命令中具有一个字母快捷方式的参数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接