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では引き続き仲間を募集しております。最新の募集状況などは下記からご確認ください。