在重新定位git分支时更改时间戳

时间:2009-10-16 18:32:15

标签: git git-rebase

我已经重新组织了一个分支中的提交,然后它将被公开,导致提交的时间戳处于混合顺序。我宁愿让他们今天只有几秒钟。

显然,这些时间戳也不正确,但由于这是事情公开的时候,我更倾向于在时间上混淆历史。

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

4 个答案:

答案 0 :(得分:104)

git rebase --ignore-date

答案 1 :(得分:25)

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

$ git rebase --committer-date-is-author-date SHA

答案 2 :(得分:13)

有以下几种方法

  1. 正常变基

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

    git rebase -i master
    git commit --amend --date=now
    git push origin <branch> -f
    

答案 3 :(得分:2)

来自评论:

--interactive option

不兼容

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

  • --interactive / -i
  • --root

请参见commit 6160b2eJunio C Hamano (gitster)(2020年8月26日)。
请参见commit 2712669前的commit ef484ad(2020年8月17日)和Rohit Ashiwal (r1walz)(2020年7月13日)。
请参见commit a3894aacommit 7573ceccommit e8cbe21Phillip Wood (phillipwood)(2020年8月17日)。
(由Junio C Hamano -- gitster --commit 9c31b19中合并,2020年9月3日)

rebase -i:支持--ignore-date

原始修补程序:Rohit Ashiwal
签名人:Phillip Wood

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

特别是,应用后端支持由'git am man'实现的许多选项,这些选项未在合并后端中实现。
这意味着根据使用哪个后端而造成混淆,可用选项会有所不同。

此修补程序将--ignore-date选项的支持添加到了合并后端。

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

并且:

rebase:添加--reset-author-date

帮助者:Junio C Hamano
签名人:Rohit Ashiwal

先前的提交在--ignore-date上引入了rebase -i标志,但是名称相当模糊,因为它并未说明是忽略作者日期还是提交者日期。
添加别名以传达确切的目的。

--reset-author-date

也:

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

原始修补程序:Rohit Ashiwal
签名人:Phillip Wood

此修补程序将--committer-date-is-author-date选项的支持添加到合并后端。
此选项使用创建新提交时将被重写的提交的作者日期作为提交者日期。

git rebase现在包含在其man page中:

--committer-date-is-author-date

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

git rebase也包含在其man page中:

--ignore-date:

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


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

请参见commit 5f35eddcommit 16b0bb9commit 56706dbJeff King (peff)(2020年10月23日)。
(由Junio C Hamano -- gitster --commit f34687d中合并,2020年10月26日)

am:使用--committer-date-is-author-date

修复损坏的电子邮件

签名人:杰夫·金

提交e8cbe2118aam:停止导出GIT_COMMITTER_DATE, 2020-08-17)重写了用于将提交者日期设置为使用fmt_ident()而不是设置环境的代码变量并让commit_tree()处理它。
但是它引入了两个错误:

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

此提交同时修复了这两个问题,这使我们通过重新配置“ apply”后端对该选项的测试成功了。

并且:

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

报告人:VenomVendor
签名人:杰夫·金

提交7573cec52c(“ rebase -i:支持--committer-date-is-author-date”,2020-08-17,Git v2.29.0-rc0-merge batch #13)从builtin/am.c复制了提交者身份分析代码。
为此,它复制了一个错误,即我们始终将电子邮件设置为空字符串。

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