如何获取Git多个指定提交中修改/新增的唯一文件列表?
获取指定Git提交的唯一修改/新增文件列表
方法一:用git show结合去重命令
直接把所有目标提交作为参数传给git show,再通过过滤和去重命令提取唯一文件列表:
git show --name-only --oneline 87291d43 bf7ffe3c 3a5aa966 50415cfa f87105b0 130cf0bf | grep -v '^[0-9a-f]\{8\} ' | sort -u
各部分作用:
git show --name-only --oneline <提交哈希列表>:批量输出指定提交的单行信息及对应的修改文件grep -v '^[0-9a-f]\{8\} ':过滤掉以8位提交哈希开头的提交标题行,只保留文件名sort -u:对文件名排序并去除重复项,确保每个文件仅显示一次
方法二:用git log实现同样效果
如果习惯使用git log,可以用类似逻辑:
git log --name-only --oneline 87291d43 bf7ffe3c 3a5aa966 50415cfa f87105b0 130cf0bf | grep -v '^[0-9a-f]\{8\} ' | sort -u
Windows PowerShell 适配命令
如果在Windows环境使用PowerShell,替换为以下命令:
git show --name-only --oneline 87291d43 bf7ffe3c 3a5aa966 50415cfa f87105b0 130cf0bf | Select-String -Pattern '^[0-9a-f]{8} ' -NotMatch | Sort-Object -Unique
内容的提问来源于stack exchange,提问作者S H




