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

GitHub Maven CI流水线报错:缺失指定提交哈希值

解决GitHub Actions Maven CI中「Missing commit <提交哈希>」错误

从你贴的完整错误日志里,我一眼就定位到了问题根源——是ChangeLogMojo这个Maven插件在通过JGit遍历提交历史时,找不到指定的旧提交。这可不是流水线配置本身的问题,而是GitHub Actions默认的代码拉取方式搞的鬼:

GitHub Actions的actions/checkout@v2默认只会做浅克隆,也就是只拉取仓库最新的1个提交,完全不会下载更早的历史记录。但你的ChangeLog插件需要读取之前的提交信息,自然就会报“找不到提交”的错误了。

解决方案:修改checkout步骤拉取完整提交历史

只需要给actions/checkout步骤加一行配置,让它拉取仓库的完整提交历史就行:

把原来的:

- uses: actions/checkout@v2

改成:

- uses: actions/checkout@v2
  with:
    fetch-depth: 0

fetch-depth: 0是GitHub Actions的特殊参数值,代表拉取所有分支、标签的完整提交历史,这样你的Maven插件就能访问到需要的旧提交了。

修改后的完整流水线配置

这里给你贴好修改后的完整maven.yml,直接替换使用即可:

# This workflow will build a Java project with Maven
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
name: Java CI with Maven
on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
      with:
        fetch-depth: 0  # 关键配置:拉取完整提交历史
    - name: Set up JDK 16
      uses: actions/setup-java@v2
      with:
        java-version: '16'
        distribution: 'adopt'
    - name: Build with Maven
      run: mvn -B package --file pom.xml

额外小提示

如果你的插件只需要最近N个提交的历史,也可以把fetch-depth设为具体数字(比如fetch-depth: 20),这样能稍微节省点拉取时间。但为了避免后续再遇到类似的历史缺失问题,直接用0拉取完整历史是最省心的选择。

内容的提问来源于stack exchange,提问作者C. Dautermann

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 16:17:43