よしたく blog

ほぼ週刊で記事を書いています

コミットした日時を変更する

LeetCode で問題を解いた後にコミットを忘れることがあった。 細かいことではあるが、解いた日とコミットをちゃんとリンクさせておきたいと思ったため、git の日時を修正する方法を調べた。 おこなっていることは日時の変更で歴史の改ざんにあたってしまうので、あくまで自分の利用の範囲内だけでに留めて悪用しないことは意識してほしい。

そもそも Author と Committer がある

コミットの日時を変更するにあたり、コミットの情報には Author と Committer が存在していることを知った。 Author はコードを書いた人、Committer はコミットをした人になる。そして、それぞれおこなった日時が記録されている。 もちろん初めてコードを書いて、コミットした時は Author と Comitter は同じ人物になり、日時も同じになる。 仮にgit commit --amendなどでコミットを変更した時は、Comitter は別の人になるが、Author は最初にコミットした人物となる。 2 つ存在している理由は、元々の作成者とコミットした人を分けることで歴史の改ざんをおこなった場合でも記録しておくためである。

git logで表示されるものは Author の情報が確認できる。 Comitter の情報も確認する時はgit log --pretty=fullerを実行すると確認できる。

f:id:yoshitaku_jp:20201228150850p:plain

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-rebase/2.17.0#Documentation/git-rebase.txt---committer-date-is-author-date

https://git-scm.com/docs/git-am#Documentation/git-am.txt---committer-date-is-author-date

参考にした記事

qiita.com

改変自体はシンプルな内容だったので記事を参考にさせてもらい、補足情報やURLをいくつかいれました。