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

git diff是否可递归检查文件夹及其子文件夹的内容差异?

Git目录差异递归检测方案

git diff 指定目录路径时默认递归检测所有层级子目录的文件变更,不需要额外添加递归参数,你当前的写法检测不到子文件夹变更可按以下步骤调整:

  • 首先确认$oldrev、$newrev变量取值正确,hook场景下需确保两个参数是合法的提交哈希值,检测的修订范围覆盖了子文件夹变更对应的提交
  • 替换--quiet参数为--exit-code,同时屏蔽标准输出避免无关内容污染变量,调整后的代码如下:
dataChangedStr=$(git diff --exit-code $oldrev $newrev -- config/extensions/ > /dev/null || echo changed)

如果仍检测不到子文件夹变更,可做以下排查:

  • 确认config/extensions/路径末尾的斜杠正常,指向的是目录而非同名文件
  • 检查子目录下的文件是否被.gitignore规则命中,被忽略的文件变更不会被git diff识别
  • 若仅需检测部分指定子目录,可直接在diff命令后追加多个目录路径,无需编写多条diff语句:
# 仅检测entity、typelist两个子目录的变更
dataChangedStr=$(git diff --exit-code $oldrev $newrev -- config/extensions/entity/ config/extensions/typelist/ > /dev/null || echo changed)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 02:30:05