如何获取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.txtlast_ci_commit.txt需要存在CI的缓存或持久化存储中,保证每次CI运行都能读取到历史记录。
3. 适配UI和日志输出
- 日志输出:直接将
git log的命令结果打印到日志即可,格式完全符合要求; - UI展示:把
git log的输出读取到脚本变量中,再按照UI的渲染逻辑(比如HTML列表、控制台彩色输出等)展示即可。
如果CI上次运行后只推送了一次代码,直接用git log -1 --format="%h - (%ar)"获取最新提交的信息就足够。
内容的提问来源于stack exchange,提问作者paperjam
相关产品推荐
相关产品推荐

