如何查看Git分支中变更的纳入时间?
当然有办法!针对你想要追踪变更实际被集成到目标分支的时间(不管是直接推送还是从其他分支合并过来)的需求,我整理了几个实用的Git技巧,完全匹配你的要求:
方法1:用
git log --first-parent追踪分支主线的集成记录 这是最直接的方式,--first-parent参数会让Git只追踪目标分支的主线历史——也就是忽略合并进来的分支里的所有提交,只显示目标分支上的提交(包括合并提交)。这样你看到的每个条目对应的时间,就是变更被纳入该分支的时间:
- 直接推送到目标分支的提交:显示的是该提交的提交时间(也就是被推送到分支的时间)
- 从其他分支合并过来的变更:显示的是合并提交的时间(也就是变更被合并到目标分支的时间)
执行命令:
git log --first-parent --pretty="%ci %h %s" <目标分支名>
参数说明:
%ci:显示提交的时间(精确到秒,格式如2024-05-20 14:30:00 +0800)%h:显示提交的短哈希值(方便快速定位)%s:显示提交的主题信息
如果需要筛选指定时间范围的记录,加上--since和--until参数即可:
git log --first-parent --since="2024-05-01" --until="2024-05-10" --pretty="%ci %h %s" main
方法2:定位特定提交的集成时间
如果想知道某一个具体的提交是何时被合并/推送到目标分支的,可以用以下步骤:
- 先确认该提交是否存在于目标分支:
git branch --contains <提交哈希>
- 找到该提交对应的合并记录(如果是从其他分支合并过来的):
git log --merges --grep=<提交哈希> <目标分支名>
或者用图形化的方式查看分支合并历史,更直观:
git log --oneline --graph --first-parent <目标分支名> -- <文件路径>
加上<文件路径>可以只查看该文件相关的变更集成记录,精准定位问题。
方法3:查看远程分支的最新集成记录
如果你需要查看远程分支的情况(避免本地分支未同步),先拉取最新的远程数据,再执行命令:
git fetch origin git log --first-parent origin/<目标分支名> --pretty="%ci %h %s"
这些方法完全避开了本地提交日期和其他无关分支的推送时间,只聚焦于变更进入目标分支的时间点,非常适合用来快速排查指定时间范围内导致集成测试失败的变更。
内容的提问来源于stack exchange,提问作者Travis Bruce




