HRBrain Advent Calendar 2022 カレンダー2の15日目の記事です。
はじめに
こんにちは。株式会社HRBrainでエンジニアリングマネージャーをしている山口です。
健康診断で少し体重が減っていたので、全盛期に戻りたいと思う今日この頃、皆様いかがお過ごしですか?
失った5kgはクリスマスと年末年始のデブ活で取り戻し、本記事では時間を取り戻したい時に使えるGitテクニックを紹介します。
Gitで使われる日時
普段何気なく使っているGit、そこで使われている日時は何種類あるかご存知ですか?
そう。Gitで使われる日時って2種類あんねん。
Author Date
まずAuthor Date、これはcommitの著者であるauthorによるcommit日時です。
-
git logに表示される日時 - 以下の方法で任意の日時を指定できる
-
GIT_AUTHOR_DATE=<date>の環境変数 -
git commit --date=<date>オプション
-
Committer Date
次にCommitter Date、これはcommitを取り込んだ人を表すcommitterによるcommit日時です。
-
git log --pretty=fullerに表示される日時 - 以下のコマンド実行時に変更される
-
git rebase/git commit --amend
-
- 以下の方法で任意の日時を指定できる
-
GIT_COMMITTER_DATE=<date>の環境変数 -
git rebase --committer-date-is-author-date- Committer DateをAuthor Dateと同期するオプション
-
GitHubで使われる日時
GitHubのステータス画面に表示されている通称「草」は、Committer Dateが表示されています。
git rebaseで他者のcommitを取り込んだり、git commit --amendでcommitをやり直すとCommitter Dateが変更されるので表示場所が変わります。
もしかして?
git commit時にGIT_AUTHOR_DATEとGIT_COMMITTER_DATEを指定すれば日時を改竄できます。
もしかして、これを繰り返せば無限に草を生やせるのでは?🤔
DEMO
いってみよう!やってみよう!
ひたすらコミットし続けるプログラムをTypeScriptで書いてみました。実行はDenoで。
イイ感じですね!
草ができるだけ自然になるように、指定した期間の30分毎にコミットするかどうかを判定しています。
パラメータで配分を変えることもできます。
まとめ
- Gitで使われる日時は、
Author DateとCommitter Dateの2種類 -
GIT_AUTHOR_DATEとGIT_COMMITTER_DATEで改竄できる - kusaを生やすときは、用法用量を守って、正しくお使いください
HRBrainでは引き続き仲間を募集しております。最新の募集状況などは下記からご確認ください。






