使用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
相关产品推荐
相关产品推荐

