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

如何下载GitHub拉取请求中变更文件的压缩包?

批量下载GitHub拉取请求中修改的文件

针对你提到的场景,有几种可行的方法来批量获取PR中修改的文件,以下是具体操作:

方法一:使用git archive结合差异文件列表

这是最直接的本地Git命令方案,适合已克隆仓库的情况:

  1. 克隆目标仓库(未克隆的话执行):
    git clone <你的仓库地址>
    cd <仓库目录>
    
  2. 获取PR的基准提交(base)和头部提交(head)哈希:
    你可以在GitHub PR页面的「Commits」标签下找到这两个提交的哈希值——base是PR创建时主分支的对应提交,head是PR分支的最新提交。
  3. 生成PR中所有修改文件的列表:
    git diff --name-only <base-提交哈希> <head-提交哈希> > modified-files.txt
    
  4. 用git archive打包这些文件:
    git archive -o pr-modified-files.zip <head-提交哈希> $(cat modified-files.txt)
    
    执行后会生成一个包含所有修改文件的zip包,文件结构和仓库内保持一致。

方法二:临时目录检出文件后打包

如果需要更灵活的文件处理,可以先将修改文件单独检出到临时目录再打包:

  1. 在仓库外创建临时目录:
    mkdir pr-temp-files
    cd pr-temp-files
    
  2. 从原仓库检出PR修改的文件:
    git --git-dir=../<原仓库目录>/.git checkout <head-提交哈希> -- $(cat ../modified-files.txt)
    
  3. 打包临时目录内的文件:
    zip -r pr-modified-files.zip .
    

方法三:通过GitHub API批量下载(无需克隆仓库)

如果不想克隆WebKit这类体积较大的仓库,可以用GitHub API直接批量下载文件:

  1. 生成一个具有repo权限的GitHub个人访问令牌(在GitHub设置的「Developer settings」中创建)。
  2. 执行命令获取并下载所有修改文件:
    curl -H "Authorization: token <你的GitHub令牌>" https://api.github.com/repos/<用户名>/<仓库名>/pulls/<PR编号>/files | awk '/"raw_url":/ {print $2}' | tr -d '",' | xargs -n 1 curl -O
    
    替换命令中的<用户名>、<仓库名>、<PR编号>和<你的GitHub令牌>为实际信息。
  3. 下载完成后打包:
    zip pr-modified-files.zip *
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 08:45:49