这个问题真的与你的shell无关git
,一切都与你的shell有关。
大多数 shell 使用空格“标记”命令行——也就是说,将其拆分为一系列离散元素。所以,例如...
rm one file
...将尝试删除一个名为的文件one
和一个名为 的文件file
,而...
rm 'one file'
...将尝试删除一个名为one file
. 因此,对于您的示例,是否使用引号并不特别重要,因为您的文件名都不包含空格。一个例外是commit
示例。如果message
包含空格,您需要引用它,否则您将得到:
$ git ci -m this is a test
error: pathspec 'is' did not match any file(s) known to git.
error: pathspec 'a' did not match any file(s) known to git.
error: pathspec 'test' did not match any file(s) known to git.
事实上,还有一点值得考虑:引用文本通常会抑制通配符扩展,所以如果我有一个名为的文件nameOfFile.txt
并且我这样做......
rm nameOf*.txt
...它会工作得很好,但如果我这样做:
rm 'nameOf*.txt'
...我会得到一个错误:
rm: cannot remove `nameOf*.txt': No such file or directory
git
但是,如果外壳程序不这样做,它看起来实际上会执行文件名扩展,因此您的通配符示例将起作用。