据说我们需要引用*
in:
git rm \*.log
因为Git有内部文件扩展。但是有什么不对或使用那个vs:
之间有什么区别git rm *.log
或在其他情况下,如
git rm log/*.log
如果shell扩展它而不是让git扩展它?
答案 0 :(得分:2)
第一个(转义)示例由git扩展,并且将匹配所有跟踪的文件,无论它们是否实际存在于树中。第二个是由shell扩展的,只匹配存在的文件。例如,执行rm *.log; git rm *.log
将从您的目录中删除文件,但不将其从git索引中删除。事实上,“git rm”命令将返回错误,因为您没有指定任何文件。
答案 1 :(得分:1)
我不使用git,所以这更像是一种思路。
看看这个:
stieber@gatekeeper:~$ echo *.cpp
Test1.cpp Test2.cpp Test.cpp
VS。
stieber@gatekeeper:~$ echo \*.cpp
*.cpp
现在,如果“echo”是在源代码存储库上运行的东西,第一个版本将专门处理我的工作目录中存在的文件,这些文件可能与第二个版本将使用的列表相同或不同“git”软件扩展了通配符。我的工作目录可能只是源代码存储库知道的文件的一个子集。
在许多情况下,工作目录应该是存储库所具有的,在这种情况下应该没有真正的区别,但是您也可以在存储库中执行诸如“擦除所有这些文件”之类的操作,而无需先打扰检查他们出去了(如果你想要删除他们,你为什么会这样做...)
根据git如何处理路径名,指定带有路径名的模式可能更有区别:/ *。cpp会专门列出我的根目录中的文件,这可能不是任何存储库的一部分。将此转义为/\*.cpp可能会告诉存储库软件处理匹配文件,无论它使用什么作为内部根目录。