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

在GitHub Action中获取实际提交作者的方法

获取Rebase合并Dependabot PR后的实际提交作者

当你以rebase方式合并Dependabot创建的PR后,GitHub Action的github.actor会显示你的登录名(因为是你触发了push操作),但提交的实际作者仍是Dependabot。要获取这个实际作者信息,最可靠的方式是直接从Git提交元数据中提取:

方法一:使用Git命令提取提交作者

通过git log命令读取最近一次提交的作者名称和邮箱,在GitHub Action中可以将其保存为输出变量供后续步骤使用:

jobs:
  get-author-info:
    runs-on: ubuntu-latest
    steps:
      - name: 拉取代码
        uses: actions/checkout@v4
        with:
          fetch-depth: 2 # 确保能获取到完整提交历史

      - name: 提取提交作者信息
        id: extract_author
        run: |
          # 获取提交作者名称
          AUTHOR_NAME=$(git log --format='%an' -1)
          # 获取提交作者邮箱
          AUTHOR_EMAIL=$(git log --format='%ae' -1)
          # 将结果写入GitHub Action输出
          echo "name=$AUTHOR_NAME" >> $GITHUB_OUTPUT
          echo "email=$AUTHOR_EMAIL" >> $GITHUB_OUTPUT

      - name: 使用作者信息
        run: |
          echo "实际提交作者名称: ${{ steps.extract_author.outputs.name }}"
          echo "实际提交作者邮箱: ${{ steps.extract_author.outputs.email }}"

关键说明

  • git log --format='%an' -1:%an表示提交作者的名称,-1指定只获取最近一次提交的信息;%ae则对应作者邮箱。
  • 拉取代码时设置fetch-depth: 2是为了避免浅克隆导致无法读取完整的提交元数据。

方法二:利用GitHub事件上下文(可选)

在push触发的Action中,github.event.head_commit.author也可能包含提交作者信息,但这种方式仅适用于单次提交的场景。如果rebase合并了多个提交,还是Git命令的方式更准确:

- name: 输出上下文作者信息
  run: |
    echo "上下文作者名称: ${{ github.event.head_commit.author.name }}"
    echo "上下文作者邮箱: ${{ github.event.head_commit.author.email }}"

注意事项

github.actor代表的是触发当前Action的用户(即执行合并操作的你),而提交的作者信息是存储在Git提交对象中的元数据,二者是不同的概念,因此必须从提交本身提取才能得到Dependabot的信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 11:27:04