You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Stash无法存储子文件夹内myFiles求助:unstash后MyFolder为空

问题排查与解决方案

这问题我之前帮人排查过好几次,大概率是Ant glob的路径匹配规则没搞对——尤其是**这个通配符的用法!先给你拆解核心问题,再给正确的写法:

核心误区:路径匹配的层级问题

你要匹配的是所有名为MyFolder的子文件夹里的myFiles文件,而Ant glob默认的单*只能匹配当前层级的目录,MyFolder/myFiles这种写法只会匹配项目根目录下的MyFolder里的myFiles,深层目录里的MyFolder(比如src/MyFolder、docs/sub/MyFolder)根本不会被命中,自然stash不到文件,unstash后就是空文件夹。

正确的Ant glob写法

要匹配任意层级下的MyFolder文件夹中的myFiles,必须用**通配符(表示零或多个目录层级),正确的匹配规则是:

**/MyFolder/myFiles
  • **:会遍历项目中所有目录层级,不管MyFolder在哪个深度都能找到
  • MyFolder/myFiles:精确匹配该文件夹下的目标文件

额外排查点

如果用了上面的写法还是不行,再检查这几个地方:

  • 基准目录是否正确:如果你的stash操作指定了basedir参数,路径是相对于这个基准目录的,要确保**/MyFolder/myFiles是相对于基准目录的正确路径
  • 排除规则冲突:如果同时设置了excludes参数,有没有不小心把**/MyFolder/myFiles排除掉了?排除规则的优先级有时候会覆盖包含规则
  • 文件系统大小写:虽然你说确认过大小写,但Ant glob在类Unix系统下是严格区分大小写的,再核对一遍文件名和匹配规则的大小写完全一致

示例操作(以Jenkins stash为例)

如果是Jenkins环境,正确的stash命令应该是:

stash includes: '**/MyFolder/myFiles', name: 'my-target-stash'

unstash时直接用:

unstash 'my-target-stash'

这样就能把所有层级MyFolder里的myFiles都恢复到原目录结构中,不会出现空文件夹的问题了。

内容的提问来源于stack exchange,提问作者red888

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:14:02