答案 0 :(得分:3)
您不能“不存储时间”,但始终可以将时间设置为00:00,将TZ设置为+0000。
对于新提交,最直接的方法是设置GIT_COMMITTER_DATE
和GIT_AUTHOR_DATE
环境变量。例如,在bash
命令行上,您可以说
export GIT_COMMITTER_DATE="$(date +%Y-%m-%d) 00:00:00+0000"
export GIT_AUTHOR_DATE="$(date +%Y-%m-%d) 00:00:00+0000"
您需要确保在每天的第一次提交之前执行此操作;也许通过将其添加到您的登录脚本之类的方式中。
您的措辞表明您可能也有提交历史。这些也可以更改,例如通过将git filter-branch
与env-filter
选项一起使用。有关其工作原理的详细信息,请参见https://git-scm.com/docs/git-filter-branch的filter-branch
文档。
但是,重要的是要了解这是一个历史重写,即您将用新的提交替换所有现有的提交,并且如果其他任何人共享此存储库,则会使它们处于损坏状态,需要进行恢复。 (请参阅git rebase文档中的“从上游rebase恢复”以了解将涉及的内容。)确实无法解决这一问题-提交和作者日期是每个提交的组成部分。
答案 1 :(得分:3)
警告:编辑提交的任何信息都会更改其哈希值,并且 因此,所有后代提交的哈希都可能导致 "rewriting" history,如果其他人已经在其中获取了提交 问题。
如前所述,git filter-branch可用于重写许多提交。 一次。
仅编辑时间戳可以通过其完成 environment filter:
如果仅需要修改以下环境,则可以使用此过滤器: 提交将被执行。具体来说,您可能要重写 作者/提交者名称/电子邮件/时间环境变量(请参阅 git-commit-tree了解详情)。
具体来说,可以设置GIT_AUTHOR_DATE
和GIT_COMMITTER_DATE
git internal date format中具有值的环境变量:
它是
<时区偏移>,其中 是自UNIX时代以来的秒数。 <时区 offset>是UTC的正或负偏移量。例如CET(其中 比UTC早1小时)是+0100。
警告:以下代码示例可一次重写整个树。
只需在{strong>环境过滤器中changed directly。
我想删除所有的时间,尤其是时区信息 在存储库中创建的提交。
要仅删除时区信息,可以只设置日期
$timestamp +0000
的变量:
git filter-branch --env-filter '
GIT_AUTHOR_DATE="$(git show -q --format="%at" "$GIT_COMMIT") +0000"
GIT_COMMITTER_DATE="$(git show -q --format="%ct" "$GIT_COMMIT") +0000"
' -- --all
(我想保持日期为顺时针。这只是我不想要的时间和时区 想要。
要删除 时间和时区,这比较棘手 (使用ISO 8601 format):
git filter-branch --env-filter '
author_ts="$(git show -q --format="%at" "$GIT_COMMIT")"
committer_ts="$(git show -q --format="%ct" "$GIT_COMMIT")"
GIT_AUTHOR_DATE="$(date -d "@$author_ts" +"%Y-%m-%dT00:00:00 +0000")"
GIT_COMMITTER_DATE="$(date -d "@$committer_ts" +"%Y-%m-%dT00:00:00 +0000")"
' -- --all
注意:时区信息未显示在format example中,
因此将来可能会中断。所以也可以use the TZ
环境变量来设置时区,但我不确定它的可移植性:
TZ=UTC git filter-branch --env-filter '
author_ts="$(git show -q --format="%at" "$GIT_COMMIT")"
committer_ts="$(git show -q --format="%ct" "$GIT_COMMIT")"
GIT_AUTHOR_DATE="$(date -d "@$author_ts" +"%Y-%m-%dT00:00:00")"
GIT_COMMITTER_DATE="$(date -d "@$committer_ts" +"%Y-%m-%dT00:00:00")"
' -- --all
答案 2 :(得分:0)
我从不需要使用它,但是这里有人创建了一个插件来管理这种情况。您可以在此处访问代码:https://github.com/bitriddler/git-change-date