如何按提交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,再逐个查询对应文件:
- 先获取PR范围内的所有提交SHA:
git rev-list <target-branch>..<pr-branch>
- 循环每个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
相关产品推荐
相关产品推荐

