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

为何在JavaScript GitHub Action中执行git log返回非预期结果?

问题成因

你编写的JavaScript Action中,@actions/exec的Git命令参数拼接错误:
本地正常执行的git log -1 --name-only --pretty=format: c0ddab命令里,--pretty=format:和提交SHAc0ddab是两个独立参数;但你在代码中将SHA直接拼接在--pretty=format:的尾部,合并成了单个参数--pretty=format: c0ddab。
这就导致Git实际执行时没有收到指定的提交SHA参数,默认查询当前工作区的HEAD提交记录,因此两次执行都返回了HEAD提交的修改文件,而且因为你把SHA写到了格式参数中,输出还会额外多打印一行你传入的SHA值,和你看到的异常表现完全吻合。

排查方案
  • 首先校验执行参数:在exec.exec执行前打印完整的Git参数数组,和本地正常执行的命令参数做对比,可快速定位参数拼接错误。
  • 修正参数写法:将--pretty=format:和提交SHA拆分为两个独立的数组项,修改后的代码如下:
const exec = require("@actions/exec");

async function myAAFunc() {
  let commitSha;
  const options = {};

  commitSha = "c0ddab";
  await exec.exec(
    "git",
    ["log", "-1", "--name-only", "--pretty=format:", commitSha],
    options
  );

  commitSha = "fc3039";
  await exec.exec(
    "git",
    ["log", "-1", "--name-only", "--pretty=format:", commitSha],
    options
  );
}

myAAFunc();
  • 验证结果:修改后重新运行Action,即可得到和本地执行一致的正确输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 02:27:05