Git 提交时间戳详解
在团队协作开发时,你是否发现:刚刚推送的代码,在 GitHub 或 GitLab 上显示的提交日期却是几天前?这并非系统错误,而是 Git 提交记录中两个关键时间戳共同作用的结果。本文将深入解析 Git 提交时间的原理,并提供修改时间戳的实用方法。
1. 远程识别的时间
许多人误以为一次 Git 提交只对应一个时间点。实际上,每次提交都精确记录了两个独立的时间戳,它们分别对应代码生命周期的不同阶段。

- 作者日期(Author Date):指代码最初被创作完成的日期。例如,你在 3 月 1 日编写完代码并执行
git commit,这个时间点就会被保存为 Author Date。 - 提交日期(Commit Date):指代码最终被记录到仓库历史的日期。当你使用
git commit --amend、变基(rebase)或合并操作时,这个日期会被更新。在常规推送中,如果提交未被修改,Commit Date 通常与 Author Date 一致;若提交被修正过,则 Commit Date 会变更为最后一次操作的时间。
那么,Git 远程仓库究竟识别哪个时间呢?答案是:两个时间戳均被完整记录。
- 作者日期 显示为 2026-03-01(即本地首次提交的时间)。
- 提交日期 显示为 2026-03-06(即提交历史最终确定的时间,通常接近推送时间)。
主流 Git 托管平台(如 GitHub、GitLab)的提交列表页,为体现代码的原始创作时间线,默认展示的是 作者日期(Author Date)。如需查看完整信息,可点击进入单次提交的详情页,那里会同时展示两个时间戳。
2. 修改已提交的时间戳
理解原理后,若需调整提交在远程显示的时间(例如将显示的 3 月 1 日改为实际推送的 3 月 6 日),该如何操作?核心方法是修改最近一次提交的信息,并通过 --date 参数指定新的作者日期。
# 1. 修改最近一次提交的作者日期,不更改提交信息 git commit --amend --no-edit --date="2026-03-06T14:30:00" # 2. 安全强制推送到远程仓库 git push --force-with-lease
关键参数解析:
--amend:用于修正(amend)上一次提交。--no-edit:表示保留原提交信息,仅修改时间戳。--date:核心参数,用于设置新的作者日期(Author Date)。执行命令后,提交日期(Commit Date)会自动更新为当前操作时间。
重要提醒:第二步的强制推送会重写远程提交历史。在团队共享的分支上执行此操作风险极高,可能导致协作混乱。建议仅在个人分支或尚未推送的本地提交上使用。
时间格式参考
Git 支持多种日期时间格式,方便开发者灵活指定。以下为常用格式示例:
# ISO 8601 格式(推荐,清晰明确) --date="2026-03-06T14:30:00+08:00" # 相对时间表述(非常人性化) --date="2 days ago" --date="yesterday 14:30" # RFC 2822 格式(常见于邮件协议) --date="Fri, 6 Mar 2026 14:30:00 +0800" # Unix 时间戳(直接使用秒数) --date="@1770000000"
总结
总而言之,Git 提交的双时间戳机制,旨在精确追踪代码的完整生命周期:作者日期标记“创作原点”,提交日期记录“最终定型时刻”。平台默认显示作者日期,是为了维护原始的开发时间线。当需要调整提交显示时间时,可通过 git commit --amend --date 命令实现。熟练掌握此技巧,可以更自如地管理提交历史记录。但请始终牢记:在共享分支上修改历史是一项需谨慎对待的高风险操作,务必与团队成员达成共识。
您可能感兴趣的文章:
- git分支管理之创建分支、重命名分支、推送分支方式
- Git拒绝推送(Push Rejected)问题全解析与解决方案
- 使用SSH协议解决Git推送失败问题的具体操作方法
- Git推送代码遭遇403 Forbidden错误的原因和解决方法
- Git大文件推送失败问题及解决方案
- Git打标签从本地创建到远端推送的详细流程
- git实现创建标签推送到远程分支上
