在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
相关产品推荐
相关产品推荐

