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

如何获取Git提交近似时长?适配CI脚本的UI与日志展示

实现方法

要生成6488e55b - (17小时前)这类格式的提交信息,完全可以通过git log的格式化参数实现,结合CI流程的状态记录就能满足需求,具体步骤如下:

1. 核心git log命令

直接用git log的自定义格式化参数,就能输出你要的样式:

# 输出最新一条提交的短哈希+相对时间
git log -1 --format="%h - (%ar)"

参数说明:

  • %h:提取提交的短哈希(比如6488e55b)
  • %ar:显示提交的相对时间(比如17小时前)
  • -1:仅获取最新的一条提交记录

如果要展示自CI上次运行以来的所有提交(每条都按该格式输出),需要先记录上次CI运行时的提交哈希,再用范围查询:

git log --format="%h - (%ar)" <上次CI提交哈希>..HEAD

这条命令会输出从上次CI提交之后,到当前最新提交的所有记录,每条都符合你要的格式。

2. 结合CI流程的完整实现

首先需要在CI流程中记录基准提交哈希,才能对比出“自上次运行以来”的变化:

  • 首次运行初始化:如果是第一次执行CI,没有历史基准,直接把当前提交哈希存入文件(比如last_ci_commit.txt),后续CI运行时读取这个文件:
    git rev-parse HEAD > last_ci_commit.txt
    
  • 后续CI运行:读取历史基准哈希,生成提交信息,最后更新基准哈希:
    # 读取上次CI运行时的提交哈希
    LAST_COMMIT=$(cat last_ci_commit.txt)
    # 输出自上次以来的所有提交信息
    git log --format="%h - (%ar)" $LAST_COMMIT..HEAD
    # 更新基准哈希为当前最新提交
    git rev-parse HEAD > last_ci_commit.txt
    
    注意:last_ci_commit.txt需要存在CI的缓存或持久化存储中,保证每次CI运行都能读取到历史记录。

3. 适配UI和日志输出

  • 日志输出:直接将git log的命令结果打印到日志即可,格式完全符合要求;
  • UI展示:把git log的输出读取到脚本变量中,再按照UI的渲染逻辑(比如HTML列表、控制台彩色输出等)展示即可。

如果CI上次运行后只推送了一次代码,直接用git log -1 --format="%h - (%ar)"获取最新提交的信息就足够。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 12:35:26