You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按提交SHA分组获取Pull Request中修改文件列表?

解决Pull Request提交SHA与修改文件分组的高效方法

嘿,我有几个高效的方案能帮你搞定这个需求,完全不用再去解析包含文件内容的补丁文件啦:

方法一:用git log一次性输出分组结果

这是最直接的方式,能让每个提交的SHA和对应的修改文件自动分组,输出格式清晰易解析:

git log --name-status --pretty=format:"=== COMMIT SHA: %H ===" <target-branch>..<pr-branch>
  • 把<target-branch>替换成PR要合并的目标分支(比如main或master),<pr-branch>替换成你的PR分支名
  • 输出结果里,每个提交会以=== COMMIT SHA: <你的SHA值> ===作为分隔头,后面紧跟该提交修改的文件列表(包含状态码和文件名),完全没有文件内容,解析起来超级方便

方法二:批量获取单个提交的修改文件

如果需要更灵活的处理(比如单独处理每个提交),可以先列出PR里的所有提交SHA,再逐个查询对应文件:

  1. 先获取PR范围内的所有提交SHA:
git rev-list <target-branch>..<pr-branch>
  1. 循环每个SHA,用git show获取修改文件(--no-patch确保不输出文件内容):
for sha in $(git rev-list <target-branch>..<pr-branch>); do
  echo "=== $sha ==="
  git show --name-status --no-patch $sha
done

方法三:用git diff-tree精准查询提交文件

git diff-tree专门用来查看提交对应的文件变更,同样只输出文件信息:

git diff-tree --name-status -r <commit-sha>
  • -r参数会递归显示子目录下的修改文件
  • 同样可以结合第一步的git rev-list来批量处理所有PR提交

这几个方法都不会输出文件内容,解析效率拉满,完全能满足你按提交SHA分组修改文件的需求~

内容的提问来源于stack exchange,提问作者Kayhan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:40:43