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

GitHub Action如何从最后一次git提交复制user.name和user.email配置

解决方案

你可以直接从本地Git历史中提取触发本次推送的提交作者信息,不需要依赖GitHub预置环境变量,操作如下:

修改Git配置部分代码

将原配置user.name和user.email的两行替换为从提交历史提取的命令即可,由于你执行git reset前HEAD默认指向用户推送的原始提交,直接读取最近1次提交的元信息即可:

# 直接提取当前HEAD对应提交的作者名和邮箱配置Git
git config user.name "$(git log -1 --pretty=format:%an)"
git config user.email "$(git log -1 --pretty=format:%ae)"

完整修改后的step代码

- name: Upload build files to repo
  run: |
    # 配置Git提交信息为原始提交的作者信息
    git config user.name "$(git log -1 --pretty=format:%an)"
    git config user.email "$(git log -1 --pretty=format:%ae)"
    # 回滚到上一次提交之前,保留原始提交的所有变更到工作区
    git reset --soft HEAD~1
    # 添加构建产物文件
    git add (build files)
    # 复用原始提交的提交信息生成新提交
    git commit -C HEAD@{1}
    # 强制推送覆盖历史
    git push --force

补充说明

  • 由于你在actions/checkout时设置了fetch-depth: 2,可以正常读取到最近提交的所有元信息,无需拉取完整仓库历史。
  • 如果你希望逻辑更稳妥,也可以在git reset操作之前就把作者信息存入临时变量,避免提交指针变动导致读取异常:
    # 提前读取原始提交信息存为变量
    ORIGINAL_NAME=$(git log -1 --pretty=format:%an)
    ORIGINAL_EMAIL=$(git log -1 --pretty=format:%ae)
    git config user.name "$ORIGINAL_NAME"
    git config user.email "$ORIGINAL_EMAIL"
    

配置完成后,Action生成的提交作者、提交者信息和原始推送的提交完全一致,不会出现GitHub识别到提交者信息不匹配的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 22:57:04