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

使用git diff-tree获取提交变更文件时仅返回顶级目录问题

解决git diff-tree仅返回顶级目录的问题

问题出在你命令末尾的*上——shell会把这个通配符展开成当前工作目录下的所有顶级文件和目录,git diff-tree会将这些作为路径限制条件,只会返回这些指定路径下的变更,所以你只能拿到顶级目录的结果。

把命令末尾的*去掉就能获取提交中所有层级的变更文件名:

git diff-tree --diff-filter=* --no-commit-id --name-only -r "${GIT_COMMIT}"

关键参数说明

  • -r:递归遍历子目录,确保能获取所有层级的变更文件
  • --name-only:仅输出变更的文件名,不显示diff内容
  • --no-commit-id:不打印提交ID,只保留文件名列表
  • --diff-filter=*:包含所有类型的变更(新增、修改、删除、重命名等)

如果需要过滤特定路径的变更,直接指定具体路径即可,比如要查看src/目录下的所有变更,命令可以写成:

git diff-tree --diff-filter=* --no-commit-id --name-only -r "${GIT_COMMIT}" src/

内容的提问来源于stack exchange,提问作者Néstor Boscán

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 18:04:52