GitHub工作流中Git命令返回结果与本地不一致问题求助
问题根源
GitHub Actions里的actions/checkout@v4默认是浅克隆,只拉取最新的1次提交,没有完整的仓库提交历史。这就导致你那条查询文件最后修改日期的命令,没法找到目标文件的历史提交记录,只能返回触发工作流的最新提交日期,而非文件实际最后被改动的日期。
解决步骤
修改Checkout步骤,加上fetch-depth: 0参数拉取完整的仓库历史:
- name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 # 拉取所有提交历史
可选优化
你原来的命令可以简化,不用遍历每个文件再排序,直接用git log就能拿到指定目录的最后修改日期,效率更高:
export LAST_UPDATE=$(git log -1 --format=%ad --date=iso -- lib/ images/ web/)
这条命令会直接返回三个目标目录中任意文件最后一次被修改的提交日期,结果和你原来的命令完全一致,但执行步骤更少,速度更快。
内容的提问来源于stack exchange,提问作者Hamza Abbad
相关产品推荐
相关产品推荐

