当前位置: 首页 > 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 完成。

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


http://www.mrgr.cn/news/91667.html

相关文章:

  • 字符串函数和结构题内存对齐
  • rknn 板端运行程序Invalid RKNN model version 6, Meet unsupported rknn target type
  • Java 面试笔记 - Java基础
  • 技术总结 | MySQL面试知识点
  • 技术解析 | 适用于TeamCity的Unreal Engine支持插件,提升游戏构建效率
  • Compose常用UI组件
  • 代码随想录算法训练营第六天| 242.有效的字母异位词 、349. 两个数组的交集、202. 快乐数 、1. 两数之和
  • SOME/IP--协议英文原文讲解6
  • IO模型与NIO基础--NIO网络传输选择器
  • 如何通过 Homebrew 安装 Qt 并配置环境变量
  • idea 2023.3.7常用插件
  • 面试题之手写call,apply,bind
  • 【OS安装与使用】part4-ubuntu22.04安装anaconda
  • virtualbox怎么把主机剪切板里的内容复制进来
  • 二、Three.js几何体BufferGeometry顶点笔记
  • 强化学习-价值学习算法
  • 如何查询网站是否被百度蜘蛛收录?
  • 计算机网络抄手 运输层
  • STM32 是什么?同类产品有哪些
  • springboot-ffmpeg-m3u8-convertor nplayer视频播放弹幕效果 artplayer视频弹幕效果