The answers to How to modify existing, unpushed commits? describe a way to amend previous commit messages that haven't yet been pushed upstream. The new messages inherit the timestamps of the original commits. This seems logical, but is there a way to also re-set the times?
Use git filter-branch
with an env filter that sets GIT_AUTHOR_DATE
and GIT_COMMITTER_DATE
for the specific hash of the commit you're looking to fix.
This will invalidate that and all future hashes.
If you wanted to change the dates of commit 119f9ecf58069b265ab22f1f97d2b648faf932e0
, you could do so with something like this:
git filter-branch --env-filter \
'if [ $GIT_COMMIT = 119f9ecf58069b265ab22f1f97d2b648faf932e0 ]
then
export GIT_AUTHOR_DATE="Fri Jan 2 21:38:53 2009 -0800"
export GIT_COMMITTER_DATE="Sat May 19 01:01:01 2007 -0700"
fi'
NOTE: When you make a commit in Git the first time, both the author and committer date are set to the same value. As soon you or someone else rebases or cherry-picks that commit, the committer date gets updated for the newly created commit.