118

在将要公开之前,我已经在分支中重新组织了提交,导致提交的时间戳处于混合顺序。我宁愿让他们都在今天,中间只有几秒钟。

显然,这些时间戳也不会是正确的,但由于这是事情公开的时间,我更喜欢它而不是混乱的历史,时间方面。

那么我如何告诉 git 在变基时创建新的时间戳?

4

4 回答 4

163

使用--ignore-date

git rebase --ignore-date
于 2009-10-16T18:36:53.670 回答
30

在我的情况下,将时间戳更改为 CommitDate 值,因此在 gitweb 中,一堆几个月前的提交显示为 4 天前。我找到了正确日期的最后一次提交并做了:

$ git rebase --committer-date-is-author-date SHA
于 2011-09-08T18:37:03.117 回答
26

有以下几种方式

  1. 正常变基

    git rebase --ignore-date
    
  2. 交互式变基

    git rebase -i master
    git commit --amend --date=now
    git push origin <branch> -f
    
于 2020-04-01T09:02:14.183 回答
11

来自评论:

不兼容--interactive option

实际上......它不再与 Git 2.29(2020 年第四季度)不兼容:“ git rebase -iman 学习了更多选项
兼容的选项:

  • --interactive/-i
  • --root

请参阅Junio C Hamano ( ) 的提交 6160b2e(2020 年 8 月 26 日。 请参阅Rohit Ashiwal ( ) 的提交2712669 ( 2020 年 8 月 17 日)和提交 ef484ad(2020 年 7 月 13 日。 请参阅Phillip Wood ( )的提交 a3894aa提交 7573cec提交 e8cbe21(2020 年 8 月 17 日) 。(由Junio C Hamano 合并 -- --提交 9c31b19中,2020 年 9 月 3 日)gitster
r1walz
phillipwood
gitster

rebase -i: 支持--ignore-date

原始补丁作者:Rohit Ashiwal
签名者:Phillip Wood

Rebase 使用两个不同的后端实现 - ' apply' 和 ' merge',每个后端都支持一组不同的选项。

特别是 apply 后端支持由 ' ( man ) ' 实现的许多选项,这些选项未在合并后端实现。 这意味着可用的选项会根据使用的后端而有所不同,这会让人感到困惑。git am

此补丁添加了--ignore-date对合并后端选项的支持。

此选项使用当前时间作为作者日期,而不是在重写提交时重用原始作者日期。
我们注意以与应用后端相同的方式处理--ignore-date和的组合。--committer-date-is-author-date

和:

rebase: 添加--reset-author-date

帮助者:Junio C Hamano
签字者:Rohit Ashiwal

之前的提交引入了--ignore-dateflag rebase -i,但名称相当模糊,因为它没有说明作者日期或提交者日期是否被忽略。
添加别名以传达确切的目的。

--reset-author-date

还:

rebase -i: 支持 --committer-date-is-author-date

原始补丁作者:Rohit Ashiwal
签名者:Phillip Wood

此补丁添加了--committer-date-is-author-date对合并后端选项的支持。
此选项使用正在重写的提交的作者日期作为创建新提交时的提交者日期。

git rebase现在在其手册页中包含:

--committer-date-is-author-date

不要使用当前时间作为提交者日期,而是使用被重新确定的提交的作者日期作为提交者日期。
该选项暗示--force-rebase.

git rebase还包括在其手册页中:

--ignore-date:

该标志被传递给 'git am' 以更改每个重新提交的提交的作者日期(请参阅 参考资料git am)。


请注意,在 2.29(上)中,“ ”和“ ”子命令的“ --committer-date-is-author-date”选项错误地丢失了电子邮件地址,这已在 Git 2.29.1(2020 年第四季度)中得到纠正。rebaseam

请参阅Jeff King ( ) 的提交 5f35edd提交 16b0bb9提交 56706db(2020 年 10 月 23 日(由Junio C Hamano 合并 -- --提交 f34687d中,2020 年 10 月 26 日)peff
gitster

am:修复损坏的电子邮件--committer-date-is-author-date

签字人:杰夫·金

提交e8cbe2118a ( am: stop exporting GIT_COMMITTER_DATE,2020-08-17) 重写了用于设置提交者日期的代码fmt_ident(),而不是设置环境变量并让其commit_tree()处理。
但它引入了两个错误:

  • 我们使用作者电子邮件字符串而不是提交者电子邮件
  • 在解析提交者身份时,我们使用了错误的变量来计算电子邮件的长度,导致它始终是零长度字符串

此提交修复了这两个问题,这导致我们通过 rebase " apply" 后端对此选项的测试现在成功。

和:

rebase: 使用 --committer-date-is-author-date 修复损坏的电子邮件

报告人:VenomVendor
签字人:Jeff King

提交7573cec52c ("rebase -i: support --committer-date-is-author-date", 2020-08-17, Git v2.29.0-rc0 --批次 #13中列出的合并) 复制了提交者身份解析代码从. 在这样做的过程中,它复制了一个错误,即我们总是将电子邮件设置为空字符串。builtin/am.c

git-am我们在上一次提交中修复了版本;此提交修复了复制的代码。

于 2020-09-05T07:24:03.043 回答