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

如何在GitHub Workflow中获取合并到main的最新PR分支名或编号?

获取合并到main分支的最后一个PR信息(分支名/编号)及Workflow实现方法

可以获取最后合并到main分支的PR对应的分支名称或PR编号,以下是两种在GitHub Workflow中实现的方法:

方法一:使用GitHub CLI(gh)

GitHub Hosted Runner默认预装了GitHub CLI,直接调用命令即可获取信息,步骤如下:

name: Fetch Last Merged PR Details
on: workflow_dispatch # 可替换为你的触发事件(如pull_request、push等)
jobs:
  fetch-pr-info:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Authenticate GitHub CLI
        run: echo "${{ secrets.GITHUB_TOKEN }}" | gh auth login --with-token

      - name: Get last merged PR number
        id: pr-number
        run: |
          PR_NUM=$(gh pr list --base main --state merged --limit 1 --json number --jq '.[0].number')
          echo "pr_number=$PR_NUM" >> $GITHUB_OUTPUT

      - name: Get last merged PR branch name
        id: pr-branch
        run: |
          BRANCH_NAME=$(gh pr list --base main --state merged --limit 1 --json headRefName --jq '.[0].headRefName')
          echo "branch_name=$BRANCH_NAME" >> $GITHUB_OUTPUT

      - name: Use fetched PR information
        run: |
          echo "Last merged PR number: ${{ steps.pr-number.outputs.pr_number }}"
          echo "Last merged PR branch: ${{ steps.pr-branch.outputs.branch_name }}"

方法二:调用GitHub REST API

如果不想依赖GitHub CLI,可直接通过REST API获取信息:

name: Fetch Last Merged PR via API
on: workflow_dispatch
jobs:
  fetch-pr-info:
    runs-on: ubuntu-latest
    steps:
      - name: Get last merged PR number
        id: pr-number
        run: |
          PR_NUM=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
            "https://api.github.com/repos/${{ github.repository }}/pulls?base=main&state=closed&sort=updated&direction=desc&per_page=1" \
            | jq '.[0].number')
          echo "pr_number=$PR_NUM" >> $GITHUB_OUTPUT

      - name: Get last merged PR branch name
        id: pr-branch
        run: |
          BRANCH_NAME=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
            "https://api.github.com/repos/${{ github.repository }}/pulls?base=main&state=closed&sort=updated&direction=desc&per_page=1" \
            | jq -r '.[0].head.ref')
          echo "branch_name=$BRANCH_NAME" >> $GITHUB_OUTPUT

      - name: Output PR information
        run: |
          echo "Last merged PR number: ${{ steps.pr-number.outputs.pr_number }}"
          echo "Last merged PR branch: ${{ steps.pr-branch.outputs.branch_name }}"

注意事项

  • 默认的GITHUB_TOKEN已具备读取仓库PR信息的权限,无需额外创建密钥
  • 私有仓库场景下,确保token拥有仓库的读取权限
  • 两种方法均能满足需求,GitHub CLI更简洁,API方式则更灵活可控

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 08:02:56