使用isomorphic-git读取指定文件提交记录报错求助
解决isomorphic-git读取指定文件提交历史的报错问题
问题场景
使用isomorphic-git v1.25.6调用git.log()时,指定filepath参数出现如下错误:
<git.log>: Could not find file or directory found at "5cd2fc6d4023ff3c104801498e4f54a3cbae4c6b:path/to/file
省略filepath参数可正常获取最新提交,但需要获取指定文件的修改日期,且Git工作目录状态干净。
解决方案
核对文件路径准确性
确认filepath是相对于dir参数(当前为.即工作目录)的相对路径,注意区分大小写(Linux/macOS环境下路径大小写敏感),避免因路径拼写错误导致文件找不到。改用
filepaths数组参数
部分版本的isomorphic-git中,单文件提交历史查询更推荐使用filepaths数组(即使仅查询单个文件),修改代码如下:git.log({fs, dir: '.', filepaths: ['path/to/file'], depth: 2})验证目标文件在提交历史中的存在性
针对报错中的提交哈希5cd2fc6d4023ff3c104801498e4f54a3cbae4c6b,用原生Git命令确认该提交是否包含目标文件:git ls-tree 5cd2fc6d4023ff3c104801498e4f54a3cbae4c6b -- path/to/file若命令无输出,说明该提交中不存在此文件,可能是文件在后续提交才被添加,或路径存在错误。
获取文件修改日期的补充方法
若仅需文件最后修改日期,可通过以下方式:- 结合
git.status()获取文件状态,搭配文件系统的修改时间; - 成功获取文件提交记录后,提取提交对象中的
commit.author.timestamp或commit.committer.timestamp,转换为可读日期格式。
- 结合
内容的提问来源于stack exchange,提问作者bert
相关产品推荐
相关产品推荐

