7

git stash list >> 将列出所有的存储

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

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

编辑:

在查尔斯·贝利(Charles Bailey)回复之后,我发现最好给问题更笼统的意义,这样它就变得更有用了。那么,git 是否有任何约定来区分“子命令”(如git stash list)和“选项”(如git tag --list)?

感谢贡献

4

4 回答 4

3

我会说这样做的原因是因为git tag需要一个参数——而不是一个子命令——它应该可以被称为任何你想要的东西。如果您愿意,您绝对应该能够调用标签“列表”。因此git tag必须将其“子命令”(或选项)隐藏在标志而不是子命令后面。

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

于 2013-04-15T13:22:52.270 回答
2

我想说这只是英文单词tag可以用作动词,所以说出来git tag v1并期望它实际标记当前的 checkout感觉很自然v1

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

于 2013-04-15T13:28:26.197 回答
1

差异的原因是它stash有多个子命令(创建、列出、应用、删除、弹出等),所以第一个词(通常)是stash子命令而不是选项。stash就像bundle,在这方面remotesubmodule

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

于 2013-04-15T12:48:44.840 回答
-3

因为 git 是the stupid content tracker,如果您不相信我,请阅读NAME. man git它的命令和命令参数背后没有逻辑,它们经常不一致,但没人关心:(

于 2013-04-15T13:21:14.237 回答