取消以文件名/标题中的某些文本开头的所有文件

时间:2015-05-28 19:20:19

标签: git gitignore

我正在尝试取消监视我的Git存储库中文件名以'form'开头的所有文件。例如:'form1.cfm,form2.cfm,form3.cfm',它们遍布我的存储库中的几个不同级别的目录。以下命令可用于取消监视整个目录,但它现在无法正常工作。

git rm --cached -r * form.cfm

当我执行该命令时,它只是删除/取消它碰到的第一个* .cfm形式 - 而不是整个文件系统中的所有匹配。

关于如何忽略以字符串开头且位于整个存储库中的文件的任何建议?谢谢!

2 个答案:

答案 0 :(得分:0)

您可以尝试以下内容:

git rm --cached `find . -iname "*form*.cfm"`

find将返回您的仓库中的所有form*.cfm,然后只需发出git rm --cached即可从git index中删除find的结果。

我使用最多4级嵌套文件夹对其进行了测试:

$ tree .
.
├── form1.cfm
└── subfolder1
    ├── form2.cfm
    └── subfolder2
        ├── form3.cfm
        └── subfloder3
            └── form4.cfm

答案 1 :(得分:0)

我刚刚在我的存储库根目录中创建了两个名为form1.cfmform2.cfm的文件,并将它们提交到存储库。然后我跑了:

git rm --cached -r form*.cfm

并且输出显示它们都是两个文件。

但是,我刚刚尝试了第二次尝试,这次也在子目录中创建了form3.cfm,并且只删除了form1.cfmform2.cfm。要删除此文件,我还必须运行:

git rm --cached -r */form*.cfm