无论如何,我可以通过从所有日期减去(比方说一周)来改变GIT中的所有提交日期。
喜欢,而不是表现 “截至2012年9月10日星期四,用户承诺...” 我想说 “2012年9月3日星期一,用户承诺......”
这仅适用于一个GIT存储库。 谢谢!
答案 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-branch
与schacon's ruby-git gem相结合找到了更具可读性的解决方案(这很棒,但AFAIK缺少重写功能)。 Ruby用于循环git历史并应用日期/时间算法,使用ActiveSupport非常好,例如actual + 6.months