在GIT中更改所有提交日期

时间:2012-10-23 16:41:57

标签: git

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

喜欢,而不是表现 “截至2012年9月10日星期四,用户承诺...” 我想说 “2012年9月3日星期一,用户承诺......”

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

2 个答案:

答案 0 :(得分:3)

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

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

最后的警告:如果有人已经使用过该回购协议,事情会变得混乱。来自github页面:

  

此操作会破坏您的回购历史记录。这是最好的   这个在克隆上,以防万一。还要注意这不应该   在与他人共享的回购中执行。自己使用   风险。

答案 1 :(得分:0)

大多数示例都基于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/rodowi/2bc0c3cff0d749121453

上查看我的脚本