当我推送到GitHub时,我可以隐藏提交的时间吗?

正如标题所说:我想在
GitHub的提交标签中,我推送到
GitHub的所有提交都会显示推送的时间戳而不是提交的时间戳.

我使用了相当标准的工作流程:

<do some work>
git add -u
git commit -m "Message 1."
...
<do some work>
git add -u
git commit -m "Message N."
git push myrepo master

这使得所有N次提交都显示在GitHub中,这很好并且很好.但是也显示了提交的时间,我不喜欢.我更希望只显示最后一个(或推送)的时间戳.

最佳答案 GitHub推送时间

您推送的时间在GitHub API上永远可见.如果你想隐藏它,别无选择:使用cron作业.

提交数据时间

可以使用环境变量控制提交数据的提交时间:

GIT_COMMITTER_DATE=2000-01-01T00:00:00+0000 \
GIT_AUTHOR_DATE=2000-01-01T00:00:00+0000 \
git commit -m 'my message'

对于–amend,使用–date选项作为作者日期:How can one change the timestamp of an old commit in Git?

no further time indications on the commit message object,这足以保护隐私.

您可能希望从post-commit钩子自动执行此操作,如:Can GIT_COMMITTER_DATE be customized inside a git hook?中所述

这是一个更高级的钩子,它使你的提交将在每天的午夜和increment by one second for every new commit开始.这使得提交按时间排序,同时仍然隐藏提交时间.

的.git /钩/提交后

#!/usr/bin/env bash
if [ -z "${GIT_COMMITTER_DATE:-}" ]; then
  last_git_time="$(git log --date=format:'%H:%M:%S' --format='%ad' -n 1 --skip 1)"
  last_git_date="$(git log --date=format:'%Y-%m-%d' --format='%ad' -n 1 --skip 1)"
  today="$(date '+%Y-%m-%d')"
  if [ "$last_git_date" = "$today" ]; then
    new_time="${last_git_time}"
    new_delta=' + 1 second'
  else
    new_time="00:00:00"
    new_delta=
  fi
  d="$(date --date "${today}T${new_time}+0000${new_delta}" "+${today}T%H:%M:%S+0000")"
  echo "$d"
  GIT_COMMITTER_DATE="$d" git commit --amend --date "$d" --no-edit
fi

GitHub upstream.

别忘了:

chmod +x .git/hooks/post-commit

测试了git 2.19,Ubuntu 18.04.

别忘了也处理:

> git rebase with a-rewrite hook:git rebase without changing commit timestamps
> git am with –committer-date-is-author-date,如Can GIT_COMMITTER_DATE be customized inside a git hook?所述

或者提交者日期仍然泄漏.

批量历史修改

这是一种方法,可以将现有范围内所有提交的提交时间修复为午夜,同时保持日期不变:

git-hide-time() (
  first_commit="$1"
  last_commit="${2:-HEAD}"
  git filter-branch --env-filter '
d="$(echo "$GIT_COMMITTER_DATE" | sed "s/T.*//")T00:00:00+0000)"
export GIT_COMMITTER_DATE="$d"
export GIT_AUTHOR_DATE="$d"
' --force "${first_commit}~..${last_commit}"
)

另见:How can one change the timestamp of an old commit in Git?

点赞