如何获取Git指定日期后的提交ID及对应变更的文件列表?
Git指定日期后变更文件查询操作指南
问题1:仅输出单个commit的变更文件路径
可以实现,你只需给git show补充格式化参数即可过滤掉头部的commit元信息、提交说明内容,仅输出变更文件路径:
git show --pretty=format: --name-only <commit_id>
参数说明:--pretty=format: 定义提交信息的输出格式为空,即可屏蔽commit哈希、作者、日期、提交消息等内容,仅保留--name-only指定的变更文件列表。
问题2:指定日期后commit获取及更简便的全量文件查询方案
获取指定日期后的所有commit ID
使用git log的时间筛选参数即可批量导出符合要求的commit哈希:
# 替换双引号内的日期即可,也支持相对时间写法如"3 days ago"、"last month" git log --after="2023-12-31" --pretty=format:"%H"
参数说明:--after筛选该日期之后的所有提交,--pretty=format:"%H"指定仅输出完整的commit哈希值。
如果需要遍历commit提取文件,可直接用如下bash脚本实现自动去重输出:
for commit in $(git log --after="2023-12-31" --pretty=format:"%H"); do git show --pretty=format: --name-only $commit; done | sort | uniq
更简便的直接查询方案(无需遍历commit)
不需要单独遍历每个commit,直接通过git log即可一步输出指定日期后所有发生过变更的文件,自动合并重复记录:
# 追加--no-merges参数可排除merge提交带来的重复文件记录 git log --no-merges --after="2023-12-31" --pretty=format: --name-only | sort | uniq
内容的提问来源于stack exchange,提问作者Edgar
相关产品推荐
相关产品推荐

