注意:この記事は Git の履歴を変更する方法を含んでいます。各自の責任で慎重に行うようにしてください。
Git のコミットデータには2種類の日時情報がある
下記は、最後のコミットの日時を日本時間で2020年10月31日午前9時に変更するコマンドです。
git commit --amend --no-edit --date="2020-10-31T00:00+09:00"
git log
で確認すると確かに上記で変更した日時になっているのですが、この変更したコミットを GitHub にプッシュしたところ、 GitHub 上では修正前の日時が表示されており、ローカルで表示される日時と噛み合わない状態でした。
調べてみると、 Git のコミット情報には author date と commit date という、2種類の日時データが記録されているらしく、上記のコマンドでは author date のみが変更されたということのようでした。
下記のコマンドを実行して author date と commit date を一致させ、プッシュし直しました。
git filter-branch --env-filter 'export GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"'
git push -f
正しいコマンド
片方の日時だけを変更したいケースもあまり無いと思うので、初めから下記のコマンドを使えば、両方の日時データが更新されるようです。
GIT_COMMITTER_DATE="2020-10-31T00:00+09:00" git commit --amend --no-edit --date "2020-10-31T00:00+09:00"