git子命令VS git --option

时间:2013-04-15 12:23:49

标签: git

git stash list>>将列出所有的藏匿

git tag --list>>将列出所有标签

但是为什么它在第一个命令中是“list”而在第二个命令中是“--list”?这对我来说很困惑(比如你做“git tag list”,然后你实际上创建了一个名为“list”的标签)。这是否仅适用于“存储”命令(因为所有存储命令似乎都没有 - )?这背后的逻辑是什么?

编辑:

在Charles Bailey的回复之后,我发现最好让问题更具一般意义,因此它变得更有用。那么,git是否使用任何约定来区分“子命令”(如git stash list)和“选项”(如git tag --list)?

感谢您的贡献

4 个答案:

答案 0 :(得分:3)

我想说的原因是因为git tag采用参数 - 而不是子命令 - 应该可以调用任何你想要的东西。如果您愿意,您绝对可以调用标签“ list ”。因此git tag必须在标志而不是子命令后隐藏其“子命令”(或选项)。

git stash的参数被更严格地定义,因此它能够使用真正的子命令。

答案 1 :(得分:2)

我只是说英语单词tag可以用作动词,所以说git tag v1并期望它实际标记当前结帐v1是很自然的

问题是,你可以添加别名来制作你想要的任何语法。当您厌倦完全键入git checkout时,请创建一个别名。尝试搜索handy git aliases

答案 2 :(得分:1)

区别的原因是stash有多个子命令(创建,列表,应用,删除,弹出等),因此第一个单词(通常)是stash子命令而不是一个选项。在这方面stash就像bundleremotesubmodule

tag只是一个“普通”命令,它只列出(默认),或创建标签(轻量级或完整)。由于“list”是默认操作,您通常不需要提供,因此它是一个选项,因此是--

答案 3 :(得分:-3)

因为git是the stupid content tracker,如果您不相信我,请阅读NAME的{​​{1}}部分。它的命令和命令参数背后没有逻辑,它们通常不一致,但是没有人关心:(