如何确定Git提交被推送到远程分支(如origin/master)的时间?
如何获取Git提交被合并/快进到远程分支的时间
我完全懂你的需求——Git默认的提交时间戳是本地生成时的时间,但你要的是提交被合并或快进到远程分支的实际时间,之前用git reflog origin/master --date=local的思路方向没问题,但默认输出确实缺了完整的作者信息,覆盖场景也有限。下面给你几个更完善的解决方案:
方法1:自定义远程分支reflog输出,补全作者信息
你之前的命令可以通过添加自定义格式,同时拿到远程分支更新时间和完整提交详情:
git reflog show origin/master --date=local --pretty=format:'%h %ad | %an <%ae> | %s'
这个命令的输出会包含:
%h:短提交哈希%ad:你指定的本地时区时间(也就是该提交被合并/快进到远程分支的时间)%an <%ae>:提交作者的姓名和邮箱%s:提交信息
示例输出大概是这样:
abc1234 2024-05-20 14:30:00 | John Doe <john@example.com> | Fix login validation bug def4567 2024-05-19 09:15:00 | Jane Smith <jane@example.com> | Add user profile editing feature
方法2:查看远程分支的完整更新事件记录
如果需要更清晰地分辨远程分支的更新类型(比如快进、合并、fetch同步),可以用带reflog参数的git log命令:
git log -g --abbrev-commit --pretty=format:'%h %ad | %s | %d' --date=iso origin/master
这里的-g参数表示查看引用日志(reflog),输出会明确标记每次远程分支的更新事件,比如fetch origin: fast-forward,帮你快速区分操作类型。
方法3:批量获取所有远程分支的最后更新时间
如果需要追踪多个远程分支的更新状态,可以用git for-each-ref批量输出:
git for-each-ref --format='%(refname:short) | %(committerdate:iso) | %(objectname:short) | %(subject)' refs/remotes/origin/
这个命令会列出所有远程分支的名称、最后更新时间、对应提交哈希和提交主题,方便快速定位特定分支的更新记录。
重要提示
- 执行以上命令前,建议先运行
git fetch origin同步最新的远程分支引用,确保你查看的是远程仓库的最新状态。 - 本地的远程分支reflog记录,是你本地对远程分支的引用变更历史,如果需要远程服务器上的原始合并时间,可能需要依托仓库管理工具的后台日志(但这里只提供本地可执行的Git命令方案)。
内容的提问来源于stack exchange,提问作者PaulD
相关产品推荐
相关产品推荐

