【问题标题】:Change ALL Commit Dates in GIT更改 GIT 中的所有提交日期
【发布时间】:2012-10-13 16:09:20
【问题描述】:

无论如何我可以通过从所有日期中减去(比如说一周)来更改 GIT 中的所有提交日期。

喜欢,而不是显示 “在 2012 年 9 月 10 日星期四,用户承诺......” 我想说 “在 2012 年 9 月 3 日星期一,用户承诺...”

这仅适用于一个 GIT 存储库。 谢谢!

【问题讨论】:

  • 你为什么要这样做;改写历史说你做的比你做的更早是我想到的唯一原因。

标签: git


【解决方案1】:

是的,您可以使用 git filter-branch 执行此操作。但是请注意,这也会影响所有哈希,所有提交都将被重新创建,并且 repo 历史记录将被重写。所以,这可能很危险。

您需要将 git filter-branch 与设置 GIT_AUTHOR_DATE 和 GIT_COMMITTER_DATE 变量的环境过滤器一起使用。在 github 中有 example script to change author info for all commits - 它是类似的东西,你只需要使用我提到的变量,并实现一个基于给定日期决定一周前日期的逻辑。

最后警告:如果有人已经使用过该回购协议,事情可能会变得一团糟。来自github页面:

此操作会破坏您的存储库的历史记录。最好这样做 这在一个克隆上,以防万一。另请注意,这不应该是 在已与他人共享的 repo 上执行。自己使用 风险。

【讨论】:

  • 谢谢 - 我将克隆存储库并尝试修复(或损坏)
【解决方案2】:

大多数示例都基于 shell 脚本(例如 eis 答案),如果您进行日期算术,IMO 可能会变得复杂(例如,查看 Date arithmetic in Unix shell scripts)。

我通过将git filter-branchschacon's ruby-git gem 结合起来找到了一个更易读的解决方案(这很棒,但AFAIK 缺乏重写功能)。 Ruby 用于循环遍历 git 历史并应用日期/时间算法,使用 ActiveSupport 非常好,例如actual + 6.months

https://gist.github.com/defvol/2bc0c3cff0d749121453查看我的脚本

【讨论】:

  • 脚本链接失效
猜你喜欢
  • 2020-07-06
  • 2018-04-25
  • 2019-12-28
  • 2011-04-18
  • 2021-10-16
  • 2014-02-02
  • 2015-09-06
  • 2021-02-22
  • 2017-09-11
相关资源
最近更新 更多