1.修改最近一次提交的作者日期和提交者日期
如果要修改最近一次commit的作者日期和提交者日期,直接使用 git commit --amend 即可
注:日期格式须为ISO-8601格式
GIT_COMMITTER_DATE="2017-10-08T09:51:07" git commit --amend --date="2017-10-08T09:51:07"
2.修改某次提交的作者日期和提交者日期
如果要更改某次(可以是最近一次也可以是非最近一次)提交的作者日期和提交者日期,可以使用交互式rebase:
-
执行git rebase -i COMMIT_SHA , 此COMMIT_SHA 为待修改日期的commit的前一个commit的commit sha -
在vi弹出交互信息中将待修改日期的commit前的pick修改为e -
执行日期修改命令 GIT_COMMITTER_DATE="2017-10-08T09:51:07" git commit --amend --date="2017-10-08T09:51:07" -
执行 git rebase --continue 转到下一个commit -
重复此过程,直到修改所有提交。 通过git status 可查看进展。
3.修改示例
当前git log提交信息如下
admin@DESKTOP-PC MINGW64 /e/TestProj/ModifyTimeTest (master)
$ git log --oneline
2fe64c4 (HEAD -> master) modify Readme.md 3
6b98331 modify Readme.md 2
98ddd80 modify Readme.md 1
fcfc064 add Readme.md
假设此时需要修改 6b98331 modify Readme.md 2 这一commit的作者日期和提交者日期
修改步骤为:
- 执行交互式变基命令
git rebase -i 98ddd80 - 在弹出的vi编辑信息中,将
6b98331 提交前的pick修改为e,随后执行 :wq 保存
e 6b98331 modify Readme.md 2
pick 2fe64c4 modify Readme.md 3
-
执行 GIT_COMMITTER_DATE="2021-10-22T15:10:07" git commit --amend --date="2021-10-22T15:10:07" 将作者日期和提交者日期均修改为2021-10-22T15:10:07。然后可选择在弹出的vi信息编辑窗中可修改提交日志,然后执行 :wq 保存 -
然后执行 git rebase --continue 转到下一个提交,直到保存所有修改。完成后再使用git log 查看提交信息即可看到提交信息已被修改
上述示例的完整日志如下:
admin@DESKTOP-PC MINGW64 /e/TestProj/ModifyTimeTest (master)
$ git log --oneline
2fe64c4 (HEAD -> master) modify Readme.md 3
6b98331 modify Readme.md 2
98ddd80 modify Readme.md 1
fcfc064 add Readme.md
admin@DESKTOP-PC MINGW64 /e/TestProj/ModifyTimeTest (master)
$ git rebase -i 98ddd80
Stopped at 6b98331... modify Readme.md 2
You can amend the commit now, with
git commit --amend
Once you are satisfied with your changes, run
git rebase --continue
admin@DESKTOP-PC MINGW64 /e/TestProj/ModifyTimeTest (master|REBASE 1/2)
$ GIT_COMMITTER_DATE="2021-10-22T15:10:07" git commit --amend --date="2021-10-22T15:10:07"
[detached HEAD 137f41d] modify Readme.md 2
Date: Fri Oct 22 15:10:07 2021 +0800
1 file changed, 16 insertions(+)
admin@DESKTOP-PC MINGW64 /e/TestProj/ModifyTimeTest (master|REBASE 1/2)
$ git status
interactive rebase in progress; onto 98ddd80
Last command done (1 command done):
edit 6b98331 modify Readme.md 2
Next command to do (1 remaining command):
pick 2fe64c4 modify Readme.md 3
(use "git rebase --edit-todo" to view and edit)
You are currently editing a commit while rebasing branch 'master' on '98ddd80'.
(use "git commit --amend" to amend the current commit)
(use "git rebase --continue" once you are satisfied with your changes)
nothing to commit, working tree clean
admin@DESKTOP-PC MINGW64 /e/TestProj/ModifyTimeTest (master|REBASE 1/2)
$ git rebase --continue
Successfully rebased and updated refs/heads/master.
admin@DESKTOP-PC MINGW64 /e/TestProj/ModifyTimeTest (master)
$ git status
On branch master
nothing to commit, working tree clean
|