忘れがちなのでメモです。

直前のコミット日時を修正

現状のコミット日時を確認します。

$ git log --pretty=fuller
commit 62c6282c9b6a3f20659559a5d975dc16a33cb7cd (HEAD -> master)
Author:     zzzmisa <__@mail.com>
AuthorDate: Sat Sep 21 14:04:18 2019
Commit:     zzzmisa <__@mail.com>
CommitDate: Sat Sep 21 14:04:18 2019
...

コミット時間を15:00に修正することにします。
まずは、AuthorDateを修正します。

$ git commit --amend --date="Sat Sep 21 15:00:00 2019 +0900"

エディタが立ち上がるので保存して終了します。
次に、CommitDateをAuthorDateに合わせて修正します。

$ git rebase HEAD~1 --committer-date-is-author-date

CommitDate、AuthorDate共に日時が変更されていることを確認します。

$ git log --pretty=fuller
commit d3dda0b230bf1b2c2609be6feb6fea395743b803 (HEAD -> master)
Author:     zzzmisa <zzzmisa.office@gmail.com>
AuthorDate: Sat Sep 21 15:00:00 2019
Commit:     zzzmisa <zzzmisa.office@gmail.com>
CommitDate: Sat Sep 21 15:00:00 2019
...

できた!

2つ以上前のコミット日時を修正

現状のコミット日時を確認します。

$ git log --pretty=fuller
commit a505b00663f8c6ad964cbec3adfeacae744bc1eb (HEAD -> master)
Author:     zzzmisa <__@mail.com>
AuthorDate: Sat Sep 21 14:10:57 2019
Commit:     zzzmisa  <__@mail.com>
CommitDate: Sat Sep 21 14:10:57 2019

    Fourth commit

commit 1338ca6d8b22ced66415cd83e39032ee199d6813
Author:     zzzmisa  <__@mail.com>
AuthorDate: Sat Sep 21 14:10:33 2019
Commit:     zzzmisa  <__@mail.com>
CommitDate: Sat Sep 21 14:10:33 2019

    Third commit

commit 7b927779cfe51ca12409ee32ac8642210a5fcbd1
Author:     zzzmisa <__@mail.com>
AuthorDate: Sat Sep 21 14:10:12 2019
Commit:     zzzmisa  <__@mail.com>
CommitDate: Sat Sep 21 14:10:12 2019

    Second commit
...

3つ分のコミット時間を、古いものからそれぞれ16:00、16:01、16:02に修正することにします。

$ git rebase -i HEAD~3

エディタが立ち上がるので、変更したいコミット、つまり今回は全てのコミットに対して、pickをeditに変えて保存します。

  1 pick 7b92777 Second commit↲
  2 pick 1338ca6 Third commit↲
  3 pick a505b00 Fourth commit↲

↓↓↓

  1 edit 7b92777 Second commit↲
  2 edit 1338ca6 Third commit↲
  3 edit a505b00 Fourth commit↲

editにしたコミットを、古いものから修正していきます。

$ git commit --amend --date="Sat Sep 21 16:00:00 2019 +0900"

エディタが立ち上がるので保存して終了します。
これで、7b92777 Second commitは修正できたので、次のコミットに移ります。

$ git rebase --continue

残り2つのコミットも同じように修正していきます。

$ git commit --amend --date="Sat Sep 21 16:01:00 2019 +0900"
$ git rebase --continue
$ git commit --amend --date="Sat Sep 21 16:02:00 2019 +0900"
$ git rebase --continue

最後のコミットでgit rebase --continueすると、Successfully rebased and updated refs/heads/master.と表示されて完了です。

次に、3つ分のコミットについて、CommitDateをAuthorDateに合わせて修正します。

$ git rebase HEAD~3 --committer-date-is-author-date

CommitDate、AuthorDate共に日時が変更されていることを確認します。

$ git log --pretty=fuller
commit b50f4cc93d50c94ba5d0072d4c1d4a97a4e2cb1e (HEAD -> master)
Author:     zzzmisa  <__@mail.com>
AuthorDate: Sat Sep 21 16:02:00 2019
Commit:     zzzmisa  <__@mail.com>
CommitDate: Sat Sep 21 16:02:00 2019

    Fourth commit

commit 4b1674e2794212247121269381d033bad8dc2682
Author:     zzzmisa  <__@mail.com>
AuthorDate: Sat Sep 21 16:01:00 2019
Commit:     zzzmisa  <__@mail.com>
CommitDate: Sat Sep 21 16:01:00 2019

    Third commit

commit 65baa22ac86a04825d873650930ae0bcebbc9165
Author:     zzzmisa  <__@mail.com>
AuthorDate: Sat Sep 21 16:00:00 2019
Commit:     zzzmisa <__@mail.com>
CommitDate: Sat Sep 21 16:00:00 2019

    Second commit
...

できた!