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

如何导出GitHub pull request中被驳回的评论至Excel?

嘿,我懂你为啥头疼——git log确实只能抓取本地提交的日志信息,但PR被驳回时的评审评论是存在GitHub平台服务器上的,和本地Git仓库的记录完全不搭边。别慌,给你两个实用方案,一步步搞定导出到Excel的需求:

方案1:用GitHub官方CLI(gh)导出评论(推荐)

GitHub CLI是官方推出的命令行工具,能直接和GitHub的API交互,比自己写脚本省心太多,而且兼容性拉满。

步骤:

  1. 安装并登录gh
    去GitHub官网下载对应你系统的gh客户端(比如Windows用winget、Mac用brew,Linux用包管理器),安装完成后运行:

    gh auth login
    

    跟着提示完成账号登录就行。

  2. 筛选近两个月被驳回的PR
    运行下面的命令,会列出所有符合条件的PR编号(已关闭且未合并的,也就是被驳回的):

    # Mac/Linux
    gh pr list --state closed --search "merged:false created:>=$(date -d '2 months ago' +%Y-%m-%d)" --json number --jq '.[] | .number'
    
    # Windows PowerShell
    gh pr list --state closed --search "merged:false created:>=$(Get-Date).AddMonths(-2).ToString('yyyy-MM-dd')" --json number --jq '.[] | .number'
    

    这里的merged:false用来排除已经合并的PR,created:>=指定了两个月前的日期起点,确保只抓最近两个月的内容。

  3. 批量导出评论到CSV(Excel兼容)
    写个简单的脚本批量处理这些PR,把评论导出成CSV文件(Excel可以直接打开):

    比如Mac/Linux的bash脚本:

    # 生成两个月前的日期
    START_DATE=$(date -d '2 months ago' +%Y-%m-%d)
    # 创建CSV表头
    echo "PR编号,评论者,评论内容,评论时间" > pr_review_comments.csv
    # 遍历符合条件的PR,导出评论
    for pr_number in $(gh pr list --state closed --search "merged:false created:>=$START_DATE" --json number --jq '.[] | .number'); do
        gh pr view $pr_number --json comments --jq '.comments[] | [env.pr_number, .author.login, .body, .createdAt] | @csv' >> pr_review_comments.csv
    done
    

    运行完这个脚本,你就能得到一个pr_review_comments.csv文件,直接用Excel打开就能看到所有被驳回PR的评论了。

方案2:用Python调用GitHub API导出(灵活定制)

如果你懂点Python,这个方案能让你更灵活地控制导出的内容格式,比如筛选特定评论者(比如仓库所有者)的评论。

步骤:

  1. 生成GitHub个人访问令牌(PAT)
    在GitHub的设置里找到「Developer settings」→「Personal access tokens」,生成一个令牌,权限勾选repo(私有仓库需要,公开仓库选public_repo就行),保存好这个令牌。

  2. 安装依赖库
    打开终端运行:

    pip install requests
    
  3. 编写导出脚本
    把下面的代码保存为export_pr_comments.py,替换里面的配置参数:

    import requests
    import csv
    from datetime import datetime, timedelta
    
    # 替换成你的配置
    OWNER = "原仓库所有者的用户名"
    REPO = "原仓库的名称"
    PAT = "你刚才生成的个人访问令牌"
    # 计算两个月前的时间(GitHub API用ISO格式)
    TWO_MONTHS_AGO = (datetime.now() - timedelta(days=60)).isoformat() + "Z"
    
    headers = {"Authorization": f"token {PAT}"}
    output_file = "pr_review_comments.csv"
    
    # 第一步:获取所有符合条件的PR(近两个月、已关闭、未合并)
    pr_numbers = []
    page = 1
    while True:
        pr_api_url = f"https://api.github.com/repos/{OWNER}/{REPO}/pulls?state=closed&page={page}&per_page=30"
        response = requests.get(pr_api_url, headers=headers)
        response.raise_for_status()
        prs = response.json()
        if not prs:
            break
        # 筛选符合条件的PR
        for pr in prs:
            if pr["created_at"] >= TWO_MONTHS_AGO and not pr["merged"]:
                pr_numbers.append(pr["number"])
            # 如果PR创建时间早于两个月前,直接停止翻页
            if pr["created_at"] < TWO_MONTHS_AGO:
                break
        page += 1
    
    # 第二步:导出每个PR的评论到CSV
    with open(output_file, "w", newline="", encoding="utf-8") as f:
        writer = csv.writer(f)
        writer.writerow(["PR编号", "评论者", "评论内容", "评论时间"])
        for pr_num in pr_numbers:
            comments_api_url = f"https://api.github.com/repos/{OWNER}/{REPO}/pulls/{pr_num}/comments"
            comments_response = requests.get(comments_api_url, headers=headers)
            comments_response.raise_for_status()
            comments = comments_response.json()
            # 遍历每个评论,写入CSV
            for comment in comments:
                # 替换评论里的换行符,避免Excel单元格错乱
                cleaned_body = comment["body"].replace("\n", " ").replace("\r", "")
                writer.writerow([
                    pr_num,
                    comment["user"]["login"],
                    cleaned_body,
                    comment["created_at"]
                ])
    
    print(f"所有评论已成功导出到 {output_file}")
    

    运行脚本后,同样会生成一个CSV文件,直接用Excel打开即可。

额外提示:

  • 如果只想导出仓库所有者的评论,可以在脚本里加个判断:if comment["user"]["login"] == "仓库所有者用户名",只写入符合条件的评论。
  • 确保你有权限访问原仓库的PR评论(公开仓库没问题,私有仓库需要令牌有对应权限)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:06:42