带通配符的 Git rm 找不到现有文件

标签 git bash wildcard

我正在尝试使用通配符执行 git remove。

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 进行的简单测试表明它实际上不是)

关于带通配符的 Git rm 找不到现有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36109438/

相关文章:

json - 如何通过 jq 合并(平均/求和).json 中的重复对象?

oracle10g - 通配符查询扩展导致术语过多

git - 克隆存储库而不使其成为远程源

成功 merge 后,Github 仍然显示分支之间的差异

linux - 现有 session 不遵守对组成员身份的更改

mysql - 通配符输入导致其他搜索输入检索多输入搜索表单中的所有数据

mysql - 字符类不适用于阿拉伯文本列

git - 在提交之间移动文件

java - 当 git push 到远程仓库时出现错误 "File java_pid66619.hprof is 661.61 MB; this exceeds GitHub' s 文件大小限制为 100.00 MB"

bash - 映射SSL/TLS密码套件及其等效的OpenSSL