代码之家  ›  专栏  ›  技术社区  ›  Forivin

删除所有Git提交的时间和时区,但保留日期

  •  1
  • Forivin  · 技术社区  · 6 年前

    我想删除在存储库中创建的所有提交的时间,尤其是时区信息。有可能吗?如果不是的话,可以简单地将时间设置为 00:00 时区到 +0000 ?
    (我想保留日期,顺便说一句,这只是我不想要的时间和时区。)

    我只发现有问题在谈论 changing the author of all commits ,但完全不需要更改属性就可以保留剩余的信息。

    是的,我知道人们还有其他方法可以找到我住的地方等等,但这对我来说已经足够好了。

    3 回复  |  直到 6 年前
        1
  •  3
  •   kelvin    6 年前

    "rewriting" history


    git filter-branch

    environment filter

    GIT_AUTHOR_DATE GIT_COMMITTER_DATE internal date format

    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
    

    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
  •  3
  •   Mark Adelsberger    6 年前

    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 filter-branch https://git-scm.com/docs/git-filter-branch