文章目录
- 什么是作者日期和提交者日期
- 如何查看作者日期和提交者日期
- 方法 1
- 方法 2
- 方法 3
- 修改最近一次提交的时间
什么是作者日期和提交者日期
对于 Git 的每一次提交,在 TortoiseGit 和 IntelliJ IDEA 都可以看到这次提交的时间。但很多人不知道的是,Git 实际上对每一个提交的时间分为两个:作者日期和提交者日期。
-
作者日期(author date):这指的是最开始提交时,所产生的提交文件上的日期
-
提交者日期(committer date):这指的是对这个提交最后一次操作的日期
这有点类似于操作系统中文件的创建时间与修改时间。
当使用 Git 进行一次提交时,这次提交的时间就会变成 作者日期
。如果以后因为某种原因对这次提交进行了一些修改、压缩等操作,则对这个提交最后一次操作的日期就会变成 提交者日期
。
所以一般情况下,提交者日期
不会早于 作者日期
。
如何查看作者日期和提交者日期
方法 1
如果想同时显示一个 Git 命令的 作者日期
和 提交者日期
,可以使用如下 Git 命令:
git log --format=fuller
更多的信息,可见官方文档:https://git-scm.com/docs/git-log
方法 2
-
查看作者日期:
git log --pretty=format:"%ad" -n 1 某个提交的哈希值
-
查看提交者日期:
git log --pretty=format:"%cd" -n 1 某个提交的哈希值
方法 3
-
查看作者日期:
git show -s --format="%ad" 某个提交的哈希值
-
查看提交者日期:
git show -s --format="%cd" 某个提交的哈希值
更多的信息,可见官方文档:https://git-scm.com/docs/git-show
修改最近一次提交的时间
如果想要修改最近一次提交的作者日期,可以使用如下命令。
git commit --amend --no-edit --date " Apr 29 22:40:00 2023 +0800"
比如,如果想把时间改为 2023 年 4 月 29 日星期六 22:40:00
,可以使用如下代码。
git commit --amend --no-edit --date "Fri Apr 29 22:40:00 2023 +0800"
其中,星期是可选的,不喜欢可以不输。
下面给出了一个 Java 代码可以自动生成当前时间的 Git 修改命令。
/**
* Windows 下 Git 命令生成器
*
* @since 2023-4-29
*/
public class GitCommandGenerator {
/**
* 生成如下的命令:将本分支最近一次的 commit 的时间修改为当前的时间
*
* @since 2023-4-29
*/
public static String amendLastCommitToCurrentTime() {
SimpleDateFormat dateFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss yyyy Z", Locale.ENGLISH);
String formattedDate = dateFormat.format(new Date());
return "git commit --amend --no-edit --date \"" + formattedDate + "\"";
}
}