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

使用spawnSync执行git命令返回空字符串,但Shell中运行正常?

解决spawnSync执行git log命令返回空的问题

你的代码中--format参数带了多余的双引号,这是导致输出为空的关键原因:

  • 在Shell中执行命令时,双引号是Shell的语法符号,用来避免参数被拆分,实际传给git的是--format=%cI
  • 但spawnSync的数组参数中,每个元素本身就是独立完整的参数,不需要额外加引号。你写的'--format="%cI"'会让git把"%cI"(包含引号)当成格式字符串,不符合git的格式语法规则,因此没有输出内容。

修正后的代码:

const { spawnSync } = require('child_process');
const foo = spawnSync('git', [
  'log',
  '--diff-filter=A',
  '--format=%cI', // 移除多余的双引号
  '--',
  `path/to/a/file/in/repo`,
])
.stdout.toString().trim();

执行修正后的代码,就能得到和Shell中一致的输出结果。如果后续需要使用带空格的格式字符串(比如--format=%h %cI),直接将完整格式写在参数里即可,不需要添加引号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 23:50:59