git stash list>>将列出所有的藏匿
git tag --list>>将列出所有标签
但是为什么它在第一个命令中是“list”而在第二个命令中是“--list”?这对我来说很困惑(比如你做“git tag list”,然后你实际上创建了一个名为“list”的标签)。这是否仅适用于“存储”命令(因为所有存储命令似乎都没有 - )?这背后的逻辑是什么?
编辑:
在Charles Bailey的回复之后,我发现最好让问题更具一般意义,因此它变得更有用。那么,git是否使用任何约定来区分“子命令”(如git stash list
)和“选项”(如git tag --list
)?
感谢您的贡献
答案 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
就像bundle
,remote
和submodule
。
tag
只是一个“普通”命令,它只列出(默认),或创建标签(轻量级或完整)。由于“list”是默认操作,您通常不需要提供,因此它是一个选项,因此是--
。
答案 3 :(得分:-3)
因为git是the stupid content tracker
,如果您不相信我,请阅读NAME
的{{1}}部分。它的命令和命令参数背后没有逻辑,它们通常不一致,但是没有人关心:(