繁体   English   中英

如何将最新的提交日期更改为最旧的?

[英]How to change the latest commit date to oldest?

所以我是 github 的新手。 我在 3 天前提交了我的 readme.md 文件,但我发现我的 readme.md 文件有错误。 我想编辑文件,但如果我编辑它,提交日期将更改为当前时间戳。 有什么方法可以在不将提交日期更改为当前时间戳的情况下编辑文件? 我想在提交更改时保留第一个提交日期。

所以我是 github 的新手。 我在 3 天前提交了我的 readme.md 文件,但我发现我的 readme.md 文件有错误。 我想编辑文件,但如果我编辑它,提交日期将更改为当前时间戳。

这有点对,但也有点不对。 最重要的是,它表明您将 Git 视为存储文件——但 Git 不存储文件。 Git 存储提交

有日期的不是文件,而是提交 然后提交包含文件,但每次提交都包含每个文件 因此,如果您现在使用旧的readme.md文件进行新提交,则该新提交将当前时间作为其时间戳。 这只是新副本readme.md旧副本readme.md 这两个文件具有相同的内容,因此基于内容对文件进行重复数据删除的 Git 只存储一次内容。

如果您将提交日期分配给文件,这意味着文件现在有两个单独的日期。 事实上,当然,提交日期是分配给commits 的 有两个不同的提交,有两个不同的日期。 两个不同的提交可能具有相同(共享)的readme.md ,或者可能具有两个不同的readme.md文件。

有什么方法可以在不将提交日期更改为当前时间戳的情况下编辑文件?

每当您进行新提交时,它都会获得一个新的提交时间戳。 但事实上,它获得了两个新的提交时间戳。 这两者之一非常容易控制,因为您可以使用--date= date为其指定特定的日期和时间戳。 另一个更难控制:它总是默认为“现在”。

因此,如果您愿意,可以轻松地将两个日期之一设置为您想要的任何值。 您可以使用命令行参数轻松设置的一个是作者日期 另一个日期是 Git 称为提交者日期的日期,并且有理由避免将其设置为乱序1,但如果您有足够的决心,Git 将允许您覆盖它。 只需在运行git commit之前设置环境变量GIT_COMMITTER_DATE它采用与--date=选项相同的字符串值--date=会相信你的计算机的时钟设置为该值,因此将使用它作为提交时间戳。

很少有充分的理由进行这种日期操作。 事实是文件不断发展,包括 README 类型的文件,如果您修复一个,就像修复任何其他错误一样。 该文件在旧提交中是错误的,并在此提交和每个包含该文件的后续提交中得到纠正。 诸如git blame类的工具会找到修复特定固定行的提交,并会不断回溯历史以查找前几行的作者。


1原因之一是它会混淆人类。 一个更技术性的原因不太好描述,而且通常也不是那么有趣:对于特别大的提交图,Git 最近正在增加一些优化,包括添加辅助图数据,其中乱序提交者日期使事情变得更加复杂并且可能更慢.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM