LoginSignup
29
2

More than 1 year has passed since last update.

時間を取り戻したい時に使えるGitテクニック

Last updated at Posted at 2022-12-14

HRBrain Advent Calendar 2022 カレンダー2の15日目の記事です。

はじめに

こんにちは。株式会社HRBrainでエンジニアリングマネージャーをしている山口です。

健康診断で少し体重が減っていたので、全盛期に戻りたいと思う今日この頃、皆様いかがお過ごしですか?

失った5kgはクリスマスと年末年始のデブ活で取り戻し、本記事では時間を取り戻したい時に使えるGitテクニックを紹介します。

image.png

Gitで使われる日時

普段何気なく使っているGit、そこで使われている日時は何種類あるかご存知ですか?

そう。Gitで使われる日時って2種類あんねん。

Author Date

git log -1.png

まずAuthor Date、これはcommitの著者であるauthorによるcommit日時です。

  • git logに表示される日時
  • 以下の方法で任意の日時を指定できる
    • GIT_AUTHOR_DATE=<date>の環境変数
    • git commit --date=<date>オプション

Committer Date

git log --pretty=fuller -1.png

次に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.com_YuG1224.png

GitHubのステータス画面に表示されている通称「草」は、Committer Dateが表示されています。

git rebaseで他者のcommitを取り込んだり、git commit --amendでcommitをやり直すとCommitter Dateが変更されるので表示場所が変わります。

もしかして?

git_commit.png

git commit時にGIT_AUTHOR_DATEGIT_COMMITTER_DATEを指定すれば日時を改竄できます。

もしかして、これを繰り返せば無限に草を生やせるのでは?🤔

DEMO

いってみよう!やってみよう!

ひたすらコミットし続けるプログラムをTypeScriptで書いてみました。実行はDenoで。

terminal.gif

イイ感じですね!

carbon.png

草ができるだけ自然になるように、指定した期間の30分毎にコミットするかどうかを判定しています。

パラメータで配分を変えることもできます。

まとめ

  • Gitで使われる日時は、Author DateCommitter Dateの2種類
  • GIT_AUTHOR_DATEGIT_COMMITTER_DATEで改竄できる
  • kusaを生やすときは、用法用量を守って、正しくお使いください

HRBrainでは引き続き仲間を募集しております。最新の募集状況などは下記からご確認ください。

29
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
29
2