日期在 Git 中的工作原理
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Git 跟踪提交中的两个日期:作者日期和提交日期。 此外,Azure DevOps Services 和 Azure DevOps Server 还会跟踪提交首次推送到服务器的时间。
- 创作日期:最初创作提交的时间。 通常,此日期为某人首次运行
git commit
的时间。 - 提交日期:将提交应用到分支的时间。 很多情况下,它与创作日期相同。 如果提交是由作者以外的其他人作为补丁的一部分来修改、重定基本值或应用的,情况则可能会有所不同。 在这些情况下,日期为重定基本值或应用补丁的时间。
- 推送日期:将提交推送到相关远程存储库的时间。 此日期特定于正在使用的远程版本控制系统,且在本地存储库中不可用。
运行 git log
时,默认会显示创作日期。
如果希望显示提交日期,则可使用多个命令行选项之一,例如 --pretty=fuller
。
让我们看一个简单的示例,看看这些概念在实践中的应用。 首先,创建一个普通提交:
git init
echo test > file.txt
git add *
git commit -m "A normal commit message"
现在,用其他消息修改该提交:
echo again > file.txt
git add *
git commit --amend -m "An amended commit"
如果检查常规日志历史记录,则会显示如下示例信息:
git log
commit 17232459f0ae25adeff21c9e21742ba22b7f3499
Date: Thu Feb 25 19:38:54 2016 -0500
An amended commit
现在,查看带创作日期的同一提交:
git log --pretty=fuller
commit 17232459f0ae25adeff21c9e21742ba22b7f3499
AuthorDate: Thu Feb 25 19:38:54 2016 -0500
Commit: Ross Brodbeck <robrodbe@microsoft.com>
CommitDate: Thu Feb 25 19:39:36 2016 -0500
An amended commit
请注意示例中创作日期与提交日期之间的细微差异。
创作日期为未经编辑的原始提交时间。 提交日期是指运行 --amend
命令的时间。
很多 git log
选项可帮助更好地了解日期。
例如,如果传递 --date
标记,则可确定日期的显示方式。
此标记对于规范化时区非常有用,因为 Git 默认以原始时区来显示日期。 它还可用于更改日期显示字符串。
要了解有关格式设置选项的详细信息,请参阅 git-log 手册页面。
更改 Git 日期
准备提交代码时,可同时设置创作日期和提交日期。 但是,此功能不应经常使用。
可通过将 --date
标记传递给 git commit
来更改提交的创作日期。
各种文章讨论了此标记的格式设置,但没有妥善记录。 此 Stack Overflow 问题很好地解释了可接受的日期格式。
此外,还可使用环境变量 GIT_COMMITTER_DATE
和 GIT_AUTHOR_DATE
来设置相应日期,如 git-commit 手册页面中所述。
如果需要采用此方法,请将此 Stack Overflow 问题用作起点。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈