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

如何用Git pathspec组合glob与exclude排除任意位置的foo目录?

Git ls-files 排除任意位置foo目录的正确方法

首先明确:exclude 和 glob 这两个魔术词完全兼容,你遇到的问题是路径规范的写法不对,不是魔术词不兼容。

原命令失效的原因

你用的 :(exclude,glob):**/foo 只会匹配并排除名为foo的文件或目录本身,但不会排除foo目录下的所有子文件、子目录。所以执行后grep foo还能看到foo/xxx这类条目。

正确的单步命令

有两种可靠的写法可以彻底排除任意位置的foo目录及其所有子项:

  1. 匹配foo目录下的所有内容并排除:
git ls-files -- . ':(exclude,glob):**/foo/**'
  1. 用末尾斜杠明确指定匹配目录(Git会自动包含其所有子项):
git ls-files -- . ':(exclude,glob):**/foo/'

执行上述任意一个命令后,再用grep foo检查,就不会出现任何foo相关的条目了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 01:19:52