Git 带通配符的 rm 找不到现有文件
Git rm with wildcard doesn't find existing files
我正在尝试使用通配符执行 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
希望有人能帮助我!
根据git-rm documentation,可能的原因可能是:
- bash 在到达
git
之前扩展 glob(由于错误消息中的“core-*-SNAPSHOT.jar
”,它没有 - 在您的特定情况下 - 因为它与您所在目录中的任何内容都不匹配)。引用论点来防止这种情况:git rm "$artname-*-$buildtype"
- 您感兴趣的文件未被跟踪(
git
的搜索行为就像它们不存在一样)
-r
需要前导目录名才能工作(文档是这么说的,但是对 git 2.7.4
的简单测试表明它实际上不是)
避免未跟踪和 .gitignored 文件的 oneliner 解决方案可能是:
git ls-files $artname-*-$buildtype | tr '\n' '[=10=]' | xargs -0 -L1 -I '$' git rm -r -f '$'
我正在尝试使用通配符执行 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
希望有人能帮助我!
根据git-rm documentation,可能的原因可能是:
- bash 在到达
git
之前扩展 glob(由于错误消息中的“core-*-SNAPSHOT.jar
”,它没有 - 在您的特定情况下 - 因为它与您所在目录中的任何内容都不匹配)。引用论点来防止这种情况:git rm "$artname-*-$buildtype"
- 您感兴趣的文件未被跟踪(
git
的搜索行为就像它们不存在一样) -r
需要前导目录名才能工作(文档是这么说的,但是对git 2.7.4
的简单测试表明它实际上不是)
避免未跟踪和 .gitignored 文件的 oneliner 解决方案可能是:
git ls-files $artname-*-$buildtype | tr '\n' '[=10=]' | xargs -0 -L1 -I '$' git rm -r -f '$'