3

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

就像,而不是显示“在 2012 年 9 月 10 日星期四,用户承诺......”我希望它说“在 2012 年 9 月 3 日星期一,用户承诺......”

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

4

2 回答 2

3

是的,你可以用git filter-branch做到这一点。但是请注意,这也会影响所有哈希,所有提交都将被重新创建,并且 repo 历史记录将被重写。所以,这可能很危险。

您需要将 git filter-branch 与设置 GIT_AUTHOR_DATE 和 GIT_COMMITTER_DATE 变量的环境过滤器一起使用。在 github 中有一个示例脚本来更改所有提交的作者信息- 它是类似的东西,你只需要使用我提到的变量,以及实现一个基于给定日期决定日期的逻辑一周前。

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

此操作对您的回购历史具有破坏性。最好在克隆上执行此操作,以防万一。另请注意,不应在已与他人共享的存储库上执行此操作。使用风险自负。

于 2012-10-23T17:30:48.110 回答
0

那里的大多数示例都基于 shell 脚本(如eis答案),如果您正在执行日期算术,IMO 可能会变得复杂(例如,看看Unix shell 脚本中的日期算术)。

git filter-branch通过结合schacon 的 ruby​​-git gem(这很棒,但 AFAIK 缺乏重写功能),我找到了一个更具可读性的解决方案。Ruby 用于遍历 git 历史并应用日期/时间算术,这使用ActiveSupport非常好,例如actual + 6.months

请参阅我的脚本https://gist.github.com/defvol/2bc0c3cff0d749121453

于 2015-10-09T00:23:51.770 回答