Git设置任意的提交时间

修改Git中提交的时间戳。

Bash
# 查看日志时间 %ad:作者的日期; %cd 提交者日期
git log --pretty=format:"%h %an %ad %cd %s" --date=iso
# git log --format=fuller --date=iso

# 这个只修改了作者日期,没有修改了提交者日期; 
git commit -m "Update" --date=format:relative:7.hours.ago
git commit -m "Update" --date="Feb 16 12:30 2021 +0100"

# 提交者日期需要设置环境变量:GIT_COMMITTER_DATE
# now=$(date -v-7d "+%Y-%m-%d %T %z") # BSD/macos
now=$(date -d "10 days ago" "+%Y-%m-%d %T %z") # GNU/linux
GIT_AUTHOR_DATE=$now GIT_COMMITTER_DATE=$now git commit -m 'Commit'
GIT_COMMITTER_DATE=$now git commit -m 'Commit' -date=$now
  • 修改最近一次提交--amend
Bash
# --amend 修改最近一次;指定时间,其中时区省略就是默认系统时区
dt="2023-02-16 12:30:33"
GIT_COMMITTER_DATE=$dt git commit --amend --no-edit --date=$dt

# 使用最新时间
git commit --amend --date="now" 
git commit --amend # now可以省略
  • 修改更早的历史提交git rebase
Bash
git rebase -i HEAD~6
# 对需要修改的提交 pick 替换为 edit

dt="" # 配置
GIT_COMMITTER_DATE=$dt git commit --amend --date=$dt
git rebase --continue
  • 其他方式:git filter-branch

参考:

Comments