正在使用git更新索引删除文件模式--删除

正在使用git更新索引删除文件模式--删除,git,Git,如何在git更新索引中提供文件模式而不是特定的文件--remove命令 # for i in pattern; do git-update-index --remove $i; done 那样的事情不符合你的目的吗?(不过,我从未使用过git更新索引。)类似于 git update-index --remove -- $(git ls-files '*.c') 请确保在ls files子句中引用您的通配符,这样它就不会被shell解释。gah,我应该知道得更清楚:|感谢您的解决方案,它成功了

如何在git更新索引中提供文件模式而不是特定的文件--remove命令

# for i in pattern; do git-update-index --remove $i; done
那样的事情不符合你的目的吗?(不过,我从未使用过git更新索引。)

类似于

git update-index --remove -- $(git ls-files '*.c')

请确保在ls files子句中引用您的通配符,这样它就不会被shell解释。gah,我应该知道得更清楚:|感谢您的解决方案,它成功了。但是,当我在一个过滤器分支语句中使用它时,在局部变量“pattern”中的模式不起作用,pattern='*.c'git filter branch--index filter'git update index--verbose--remove--“$(git ls files--$”(pattern)”“'HEAD$”(pattern)”试图扩展一个名为“(pattern)”的变量,这不是您想要的。围绕$(git ls files…)调用的附加引号也可能是错误的——它们会将输出转换为git update index、换行符等的单个参数,而不是您想要的。例如,我在一个测试repo中这样做了,这有点像您需要的:git filter分支--index filter'git update index--verbose--force remove--remove--$(git ls files--p4-)--分支(它吹走了所有的“p4-”文件)。如果文件名带有空格,可能会有问题。最好使用
--index filter'git ls files-z\*.c | git update index--remove-z--stdin'
。它使用以null结尾的字符串,因此可以处理包含换行符、空格和其他奇怪字符的文件名。