我正在尝试使用wilcards执行git删除。
git rm -r -f $artname-*-$buildtype
$ artname变量类似于“core”,$ buildtype类似于“SNAPSHOT.jar”
因此,如果远程仓库中有一个名为“core-1.0-SNAPSHOT”的文件,则应使用通配符将其删除。
但这不起作用。变量确实解决了,但通配符似乎不起作用。
这是我得到的错误
fatal: pathspec 'core-*-SNAPSHOT.jar' did not match any files
我希望,有人可以帮助我!
答案 0 :(得分:1)
根据git-rm documentation,可能的原因可能是:
git
之前展开它(由于错误消息中的“core-*-SNAPSHOT.jar
”,它没有 - 在您的特定情况下 - 因为它没有不匹配您所在目录中的任何内容。引用参数以防止这种情况:git rm "$artname-*-$buildtype"
git
的搜索行为就好像它们不存在一样)-r
需要使用前导目录名(文档说明了这一点,但使用git 2.7.4
的简单测试表明它实际上并非如此) 答案 1 :(得分:1)
一个避免未跟踪和.gitignored文件的oneliner解决方案可以是:
git ls-files $artname-*-$buildtype | tr '\n' '\0' | xargs -0 -L1 -I '$' git rm -r -f '$'