您现在的位置是:首页 >技术杂谈 >对于 Git 每一次提交的时间信息,什么是作者日期和提交者日期网站首页技术杂谈

对于 Git 每一次提交的时间信息,什么是作者日期和提交者日期

暗诺星刻 2024-06-17 10:24:58
简介对于 Git 每一次提交的时间信息,什么是作者日期和提交者日期

什么是作者日期和提交者日期

对于 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 + """;
    }
}
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。