当前位置: 首页 > news >正文

git-提交时间和作者时间的区别

1.介绍

定义介绍
提交时间(Committer Date):决定了提交在 Git 历史中的位置,通常影响 GitHub 上提交显示的顺序。
作者时间(Author Date):虽然不影响提交的排序,但在每个提交详情页面上可以看到这个时间,它代表的是原始提交的时间。

使用场景
本地或者远程服务器是根据提交时间进行排序显示提交记录的先后顺序,这也是符合我们常识的;而作者时间不参与排序,只作为显示列。因此我们本地看到的时间并不是提交时间,而是作者时间。这个后面验证。

发生时机
当我们正常执行git commit时,提交时间和作者时间时一致的
当我们执行git commit --ammend时,当前的提交记录会覆盖上次本地未push的提交记录,此时提交时间和作者时间就不一致了

2.查看提交记录的提交时间和作者时间

提交记录时间线如图
在这里插入图片描述
这里的test提交记录是本地已提交但未push的记录,我们以此记录进行测试和验证,该记录的commitID为581118dd
在这里插入图片描述

查看时间命令

git show 581118dd --format=fuller

在这里插入图片描述

可以看到提交时间和作者时间是一致的,现在我们使用git commit --ammend重新提交一次记录,记录备注信息为 test2.
在这里插入图片描述
此时commitId也发生了变化。
查看带–ammend重新提交后的提交时间和作者时间,执行命令

git show 2c8c9163 --format=fuller

在这里插入图片描述
当前2c8c9163相比581118dd只改变了提交时间,但并修改作者时间。

修改当前2c8c9163记录的作者时间,因为次提交记录的时间是2025/02/07,我们修改为2025/02/06
在这里插入图片描述
执行命令

git commit --amend --no-edit --date "2025-02-06 00:00:00"

在这里插入图片描述
查看作者时间是否改变:

git show 770fc30c--format=fuller

在这里插入图片描述
可见,改变的确实作者时间,我们看一下本地开发工具显示效果。

在这里插入图片描述
提交记录确实被修改为了770fc30c,时间被修改为了 2025/02/06,但是提交记录并未按照显示的时间进行排序,因此我们验证
1.提交记录并未按照作者时间进行排序,而是根据提交时间排序
2.本地开发工具显示的时间并不是提交时间,而是作者时间。

3.拓展

修改提交时间
此命令只修改提交时间,并不会修改作者时间。

GIT_COMMITTER_DATE="YYYY-MM-DD HH:MM:SS" git commit --amend --no-edit

将 “YYYY-MM-DD HH:MM:SS” 替换为你希望设定的新日期和时间。

更新提交时间
此命令不会修改作者时间,只会讲提交时间设置为当前时间。

GIT_AUTHOR_DATE="YYYY-MM-DD HH:MM:SS" git commit --amend --no-edit

将 “YYYY-MM-DD HH:MM:SS” 替换为你希望设定的新日期和时间。

修改作者时间并更新提交时间
此命令会修改作者时间,并且会更新提交时间为当前时间。

 git commit --amend --no-edit --date="YYYY-MM-DD HH:MM:SS"

将 “YYYY-MM-DD HH:MM:SS” 替换为你希望设定的新日期和时间。
修改提交时间和作者时间

GIT_COMMITTER_DATE="YYYY-MM-DD HH:MM:SS" git commit --amend --no-edit --date="YYYY-MM-DD HH:MM:SS"

将 “YYYY-MM-DD HH:MM:SS” 替换为你希望设定的新日期和时间。

修改指定提交记录的作者时间
在这里插入图片描述

1.线修改系统默认文本编辑器
这里以linux为例,设置vim为默认文本编辑器

git config --global core.editor "vim"

在这里插入图片描述

2.编启动交互式 rebase
使用以下命令开始一个交互式的 rebase 过程,从你想修改的提交点开始。假设你知道想修改的提交是从当前分支起点算起的第n个提交,那么可以运行:

git rebase -i HEAD~n

这里执行的最新三条记录

git rebase -i HEAD~3

在这里插入图片描述
改动后
在这里插入图片描述
按照vim操作命令保存退出

如果你知道具体的提交哈希值,也可以基于该提交进行rebase:

git rebase -i <commit-hash>^

注意这里的 是目标提交的前一个提交的哈希值。

3.标记提交为 edit:在打开的文本编辑器中,将你想修改作者时间的那行前面的单词 pick 改为 edit,然后保存并关闭编辑器。这会告诉 Git 在这个提交处暂停,允许你进行修改。
设置作者时间并 amend 提交:Git 会暂停在这个提交上,这时你可以设置新的作者时间,并使用 --amend 选项来更新提交:

GIT_AUTHOR_DATE="YYYY-MM-DD HH:MM:SS" git commit --amend --no-edit

将 “YYYY-MM-DD HH:MM:SS” 替换为你希望设定的新日期和时间。
这里我们使用

git commit --amend --no-edit --date "2029-06-06 06:06:06"

在这里插入图片描述

5.继续 rebase 过程:完成修改后,使用以下命令继续 rebase:

git rebase --continue

在这里插入图片描述

6.解决冲突(如果存在):如果在 rebase 过程中有任何冲突,请解决这些冲突,并使用 git add . 标记冲突已解决,然后再次运行 git rebase --continue 直到 rebase 完成。

查看效果
在这里插入图片描述

相关文章:

  • 宝塔mysql8.0设置数据库区分大小写
  • 英伟达(NVIDIA)芯片全解析:专业分类、应用场景与真实案例
  • Deepseek私有化部署
  • 车载调频发射机-参观、考察、学习随车讲解的好助手-车载移动调频发射车队解说导览系统应用
  • 什么是uniapi
  • 有道翻译逆向
  • 机器学习实战(9):神经网络基础——从感知机到多层感知机
  • GCC之编译(8)AR打包命令
  • kafka-集群扩容
  • docker 改了镜像源为阿里云,还是下载失败
  • RocketMQ保证消息有序性
  • 标量化rknn的输入输出向量转换处理
  • (deepseek)按键滤波硬件
  • Ubuntu22.04.6如何固定ip地址
  • 【UCB CS 61B SP24】Lecture 5 - Lists 3: DLLists and Arrays学习笔记
  • Spring AI + Ollama 实现调用DeepSeek-R1模型API
  • 修改阿里云服务器内网ip
  • 力扣-回溯-40 组合总和Ⅱ
  • 进制转换及C语言中进制转换方法
  • Git中revert和reset区别?
  • b2b网站推广/百度免费发布信息
  • 万能搜索网站/怀来网站seo
  • 做百度网站多少钱/中国企业500强
  • 大丰网站建设价格/2345网址导航官网官方电脑版下载
  • 小程序小程序开发/外汇seo公司
  • 网站首页 排版/企业推广是什么职业