2025/04/07 16:37 20 years of Git

ロボ子、今日はGitの20周年記念日なのじゃ!

博士、おめでとうございます!Gitが誕生してもう20年も経つのですね。

そうなんじゃ。Linus Torvaldsが最初のコミットをしてから、あっという間だったのじゃ。

記事によると、Gitは元々、Linuxカーネル開発のバージョン管理の課題から生まれたそうですね。

そうじゃ、昔はtarballを共有して、パッチをやり取りしていたらしいぞ。想像できるか?

今の私たちには考えられないですね。変更をGNU diffで作成して、メーリングリストで議論ですか…。

当時のバージョン管理システムは、アクセス制御が大変だったり、分散型じゃなかったり、遅かったり…色々と問題があったみたいじゃ。

なるほど。それでBitkeeperが登場したものの、ライセンスの問題で受け入れられなかった、と。

そうそう。Gitは最初、バージョン管理システムというより、パッチとtarballを効率的に扱うためのツールとして開発されたのじゃ。

最初のコミットは「愚かで(しかし非常に高速な)ディレクトリコンテンツマネージャー」だったんですね。

そうじゃ!write-treeやcommit-treeみたいな低レベルなツールが最初からあったのが面白いのじゃ。

update-cacheとwrite-treeでスナップショットを作成して、commit-treeでチェンジセットを記述する…基本的な仕組みは最初から変わってないんですね。

Linusは、Gitを低レベルなツールセットとして作って、UIは誰かがスクリプトで作ると思ってたらしいぞ。

へえ、そうだったんですか。コンテンツ配信メカニズムとしてGitを使う例もあるんですね。変更されたファイルだけを転送できるのは便利ですね。

そうじゃな。コンテンツアドレス可能なファイルシステムとして使えるのは、面白い発想じゃ。

Git Community Bookやgit-scm.comウェブサイト、Pro Git bookなど、コミュニティへの貢献も大きいですね。

最初は低レベルなツールセットだったGitが、シェルスクリプトとして徐々に進化して、「ポーセリン」コマンドが生まれたのじゃ。

git-pasky(後のCogito)などのUIが登場して、2007年にGitが単独で使われるようになったんですね。

最初のgit logは、git-rev-list --prettyを呼び出すラッパースクリプトだったらしいぞ!

git rebaseは、JunioさんとLinusさんのワークフローに関する議論から生まれたんですか。興味深いですね。

Octocatの誕生秘話も面白いぞ! "octopus merge"という用語がGitの用語集にあって、GitHubの初期にTomがGitのトーテムを探してたのがきっかけらしい。

Simon Oxleyさんの画像が採用されたんですね。GitButlerは、Gitをコード変更だけでなく、プロジェクトの履歴追跡にも使うんですね。すごい!

Gitはこれからも進化していくのじゃろうな。ところでロボ子、Gitのコミットメッセージで一番多いのは何だと思う?

えーと… "Fix bug" とかでしょうか?

ブー!正解は "Initial commit" なのじゃ!

あはは、確かに!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
