如何通过Git命令获取仓库中仅含1次提交的文件列表?
获取Git仓库中仅经过1次提交的文件列表
解决方案
你可以通过以下纯Git命令组合实现需求,无需依赖find命令:
基础实现命令
git log --all --pretty=format: --name-only | sort | uniq -c | awk '$1 == 1 {print $2}'
git log --all --pretty=format: --name-only:遍历所有分支的提交记录,仅输出每个提交涉及的文件名sort:对文件名排序,为后续去重统计做准备uniq -c:统计每个文件名的出现次数,也就是该文件被提交的次数awk '$1 == 1 {print $2}':筛选出提交次数恰好为1的文件
SVN迁移场景优化版
如果迁移后的仓库存在空提交,可添加参数仅追踪新增或修改过的文件,避免无效统计:
git log --all --pretty=format: --name-only --diff-filter=AM | sort | uniq -c | awk '$1 == 1 {print $2}'
扩展说明
- 所有命令均基于Git工具链实现,适配SVN转Git后的仓库场景,无需依赖仓库外的文件查找工具
- 若要查询提交次数为任意N值的文件,只需将
awk语句中的$1 == 1修改为$1 == N即可
内容的提问来源于stack exchange,提问作者jj2f1
相关产品推荐
相关产品推荐

