如何查看Git中提交A与提交B之间新增的目录?
仅显示Git提交A和B之间新增的目录
可以通过组合Git命令和简单的文本处理工具实现这个需求,核心思路是先筛选出两个提交间新增的文件,再提取这些文件所在的目录并去重(同一目录下多个文件新增会重复出现)。
方法一:使用git diff
执行以下命令:
git diff --name-only --diff-filter=A <commit-A> <commit-B> | xargs -I{} dirname "{}" | sort -u
各部分作用:
--name-only:仅输出发生变更的文件路径,不显示具体diff内容--diff-filter=A:只筛选**新增(Added)**的文件xargs -I{} dirname "{}":对每个新增文件路径提取其所在的目录sort -u:对目录列表排序并去重,避免同一目录多次出现
方法二:使用git log(查看提交区间内所有提交的新增目录)
如果需要查看<commit-A>到<commit-B>之间所有提交里新增的目录,可执行:
git log --name-only --diff-filter=A --pretty=format:'' <commit-A>..<commit-B> | xargs -I{} dirname "{}" | sort -u
--pretty=format:'':去掉log的提交信息,只保留文件路径- 其余参数作用和方法一一致
注意事项
Git本身不追踪空目录,所以新增的目录一定是因为目录下有文件被首次提交,上述命令正是基于这个特性来提取新增目录的。如果是空目录,Git不会将其纳入版本控制,也就不会出现在diff或log的结果中。
内容的提问来源于stack exchange,提问作者Borea Deitz
相关产品推荐
相关产品推荐

