Git入门者咨询:如何列出仓库近一周提交中新增/删除的文件?
列出Git仓库近一周新增/删除文件的几种实用方法
嘿,这个需求其实用Git的命令组合就能轻松搞定,我整理了几个不同场景下的用法,你可以按需选择:
1. 一次性列出所有新增/删除的文件(去重)
如果你只想得到一份干净的、无重复的文件列表,用这个命令:
git log --since="1 week ago" --pretty=format: --name-status | grep -E "^(A|D)" | cut -f2- | sort | uniq
我拆解下每个部分的作用:
--since="1 week ago":限定只查询近一周内的提交记录--pretty=format::去掉提交信息里的作者、日期、提交说明等冗余内容,只保留文件相关的行--name-status:显示每个文件的变更状态(A=新增,D=删除,M=修改等)grep -E "^(A|D)":过滤出状态为新增或删除的行,排除修改类文件cut -f2-:去掉每行开头的状态标记,只保留文件名部分sort | uniq:对文件名排序并去重,避免同一个文件多次提交后重复显示
2. 按提交分组显示(关联提交信息)
如果你想知道这些新增/删除的文件属于哪个提交,可以用这个命令,它会把提交信息和对应的文件变动关联起来:
git log --since="1 week ago" --name-status --oneline | grep -B1 -E "^(A|D)"
补充说明:
--oneline:用简短的提交哈希和标题显示每个提交,内容更紧凑grep -B1 -E "^(A|D)":显示匹配到的新增/删除文件行,同时显示它前面的一行(对应提交信息),让你清楚看到每个提交里的文件变动
3. 单独列出新增或删除的文件
如果只需要看新增的文件,或者只看删除的文件,可以用更精准的过滤:
- 只看新增文件:
git log --since="1 week ago" --pretty=format: --name-only --diff-filter=A | sort | uniq
- 只看删除文件:
git log --since="1 week ago" --pretty=format: --name-only --diff-filter=D | sort | uniq
这里的--diff-filter=A和--diff-filter=D是直接告诉Git只筛选新增(Added)或删除(Deleted)的文件,比用grep过滤更高效准确。
小提示
如果你的Git版本比较老,--since="1 week ago"可能需要换成--since=7.days,不过现在大部分新版本的Git都支持两种写法,你可以试试哪种更适配你的环境。
内容的提问来源于stack exchange,提问作者user360
相关产品推荐
相关产品推荐

