LeetCode で問題を解いた後にコミットを忘れることがあった。 細かいことではあるが、解いた日とコミットをちゃんとリンクさせておきたいと思ったため、git の日時を修正する方法を調べた。 おこなっていることは日時の変更で歴史の改ざんにあたってしまうので、あくまで自分の利用の範囲内だけでに留めて悪用しないことは意識してほしい。
そもそも Author と Committer がある
コミットの日時を変更するにあたり、コミットの情報には Author と Committer が存在していることを知った。
Author はコードを書いた人、Committer はコミットをした人になる。そして、それぞれおこなった日時が記録されている。
もちろん初めてコードを書いて、コミットした時は Author と Comitter は同じ人物になり、日時も同じになる。
仮にgit commit --amend
などでコミットを変更した時は、Comitter は別の人になるが、Author は最初にコミットした人物となる。
2 つ存在している理由は、元々の作成者とコミットした人を分けることで歴史の改ざんをおこなった場合でも記録しておくためである。
git log
で表示されるものは Author の情報が確認できる。
Comitter の情報も確認する時はgit log --pretty=fuller
を実行すると確認できる。
git rebase で改変する
まずは rebase を使って、コミットを変更する操作をおこなう。
git rebase -i HEAD
で rebase を実行する。
対象のコミットを edit に変更する。
git commit --amend --date="Thu, 31 Dec 2020 14:59:59 GMT" git rebase --continue
rebase オプションの--committer-date-is-author-date
次にgit rebase
のオプションにある--committer-date-is-author-date
を実行する。
これをおこなうことで、Committer の日付を Author に適用できる。
https://git-scm.com/docs/git-am#Documentation/git-am.txt---committer-date-is-author-date
参考にした記事
改変自体はシンプルな内容だったので記事を参考にさせてもらい、補足情報やURLをいくつかいれました。