1

据说我们需要引用*in:

git rm \*.log

因为 Git 有它的内部文件扩展。但是有什么问题或者使用它与使用它有什么区别:

git rm *.log

或在另一种情况下,例如

git rm log/*.log

如果外壳扩展它与让 git 扩展它?

4

2 回答 2

2

第一个(转义)示例由 git 扩展,并将匹配所有跟踪的文件,无论它们是否实际存在于树中。第二个由 shell 扩展,并且只匹配存在的文件。例如,doingrm *.log; git rm *.log将从您的目录中删除文件,但不会将它们从 git 索引中删除。事实上,“git rm”命令会返回一个错误,因为你没有指定任何文件。

于 2012-08-27T23:18:43.010 回答
1

我不使用 git,所以这更像是一般的思路。

看看这个:

stieber@gatekeeper:~$ echo *.cpp
Test1.cpp Test2.cpp Test.cpp

对比

stieber@gatekeeper:~$ echo \*.cpp
*.cpp

现在,如果“echo”是在源代码存储库上运行的东西,那么第一个版本将专门处理我的工作目录中存在的文件,这可能与第二个版本使用“git”时使用的列表相同,也可能不同。软件扩展通配符。我的工作目录可能只是源代码存储库知道的文件的一个子集。

在许多情况下,工作目录应该几乎就是存储库所拥有的,在这种情况下应该没有真正的区别,但是您也可以在存储库上执行诸如“擦除所有这些文件”之类的操作,而无需先检查它们(你为什么要,如果你想删除它们......)

根据 git 处理路径名的方式,使用路径名指定模式可能会有更大的不同:/*.cpp 将专门列出我的根目录中的文件,这些文件可能不属于任何存储库。将其转义为 /\*.cpp 可能会告诉存储库软件在它使用的任何内部根目录中处理匹配的文件。

于 2012-08-27T23:25:29.333 回答