如何列出今年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




