“你做什么?”;git签出\*";及;git提交—“提交”;完成?

“你做什么?”;git签出\*";及;git提交—“提交”;完成?,git,Git,我看到一个页面上引用了git checkout\*和git commit-。这些计划有什么作用?(从手册页上看,这似乎并不明显。)如果要发出命令 git checkout * 然后,shell将在执行git checkout之前展开*全局。例如,如果您有文件a.txt、b.txt和c.txt,shell会将其扩展到 git checkout a.txt b.txt c.txt 在运行它之前。相反,当您使用\*时,*将被转义,并从手册页直接传递到git checkout: git checko

我看到一个页面上引用了
git checkout\*
git commit-
。这些计划有什么作用?(从手册页上看,这似乎并不明显。)

如果要发出命令

git checkout *
然后,shell将在执行
git checkout
之前展开
*
全局。例如,如果您有文件a.txtb.txtc.txt,shell会将其扩展到

git checkout a.txt b.txt c.txt
在运行它之前。相反,当您使用
\*
时,
*
将被转义,并从手册页直接传递到
git checkout

git checkout [-p|--patch] [<tree-ish>] [--] <paths>
git签出[-p|--patch][[-]
当给出或--patch时,git checkout不进行切换 分支机构。它会更新中的命名路径 索引文件或命名文件(通常是提交)中的工作树。在这种情况下 -b和--轨迹选项是没有意义的,给出其中任何一个都会导致错误。这个 参数可用于指定要更新索引的特定树(即提交、标记或树) 更新工作树之前的给定路径

在这里,他正在逃离glob
\*
,以防止bash扩展它;所以git可以使用它来扩展索引中的内容

编辑(问题更新后):

关于git提交-,“规范版本”: 这只是
commit-m'.'
的一个输入错误(注意,它就在m键旁边)


实际上,
git commit--file-
将从stdin读取其输入,当用于从其他命令获取管道数据时;但这并不是您示例中的意图。

您最好先思考问题,然后再发布,而不是反复修改问题的主要部分。我现在明白了,在将bash传递给git之前,传递“*”会阻止它进行全局扩展。但我还是不明白git用这个做什么。“这样git就可以使用它来扩展索引中的内容”是什么意思;git索引包含一个文件列表(已添加到索引中的文件)。如果执行
git checkout*
bash将
*
与当前工作目录匹配,则展开命令并实际执行
git checkout file1 file2 file3…
。如果执行
git checkout\*
,git将接收glob并将其与索引中的列表相匹配,执行上面黄色框中描述的操作,并使用所有匹配的文件(本例中的所有文件)。