You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何列出今年Git提交的时间戳与提交信息?及多分支提交日志提取方法

问题1:列出今年内所有Git提交的时间戳及提交消息

要快速筛选今年内的提交并输出你需要的信息,直接用git log的时间范围参数配合自定义格式化输出就可以搞定:

# 输出Unix时间戳(秒级)+ 提交消息
git log --since="2024-01-01" --until="2024-12-31" --pretty=format:"%at %s"

# 如果你想要人类友好的可读时间(比如YYYY-MM-DD HH:MM:SS),把%at换成%ai
git log --since="2024-01-01" --until="2024-12-31" --pretty=format:"%ai %s"

简单解释下参数:

  • --since--until用来锁定时间范围,把年份改成当前年份就行
  • %at对应Unix时间戳,方便后续脚本处理;%ai是ISO标准的可读时间格式
  • %s就是提交时写的简短消息

怕每年改日期麻烦?用bash的日期命令自动生成当年的起止日期:

git log --since="$(date +%Y)-01-01" --until="$(date +%Y)-12-31" --pretty=format:"%at %s"
问题2:从标签起始点到当前的全分支提交日志(含时间戳、消息、分支信息)

你提到的需求git log其实完全能满足,只是需要组合几个参数。假设你要从某个特定标签(比如v1.5)开始查询,命令如下:

git log v1.5..HEAD --branches --pretty=format:"%at %s %d"

参数拆解:

  • v1.5..HEAD:指定查询的提交范围——从标签v1.5之后的所有提交,到当前所有分支的最新状态
  • --branches:确保包含所有本地分支的提交,不管有没有合并到主分支
  • %d:会显示该提交关联的分支/标签信息(比如(HEAD -> dev, feature/payment),一眼就能看出提交属于哪个分支)
  • 同样,把%at换成%ai就能得到可读时间格式

如果仓库里有多个标签,想自动用最新创建的标签作为起始点,用这两行命令:

# 自动获取最新创建的标签
latest_tag=$(git tag --sort=-creatordate | head -1)
# 从最新标签到当前的全分支提交日志
git log $latest_tag..HEAD --branches --pretty=format:"%ai %s %d"

要是你只想看未合并到主分支的提交,再加个--not --merged main(把main换成你的主分支名):

git log $latest_tag..HEAD --branches --not --merged main --pretty=format:"%ai %s %d"

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

火山引擎 最新活动