正如标题所说:我希望我推送到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中,这很好并且很好。但是也显示了提交的时间,我不喜欢。我更希望只显示最后一个(或推送)的时间戳。
答案 0 :(得分:2)
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 / hooks / post-commit
#!/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}${new_delta}" "+${today}T%H:%M:%S+0000")"
echo "$d"
GIT_COMMITTER_DATE="$d" git commit --amend --date "$d" --no-edit
fi
别忘了:
chmod +x .git/hooks/post-commit
在git 2.19,Ubuntu 18.04上进行了测试。
别忘了还要处理:
git rebase
和post-rewrite
钩子:git rebase without changing commit timestamps git am
和--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?
答案 1 :(得分:0)
您有几种选择: