「Git」誕生から20周年を記念してリーナス・トーバルズ氏が開発初期の裏事情や使用頻度の高いコマンドなどを明かす


バージョン管理ソフトウェア「Git」は2025年4月7日に最初のコミットから20年を迎えました。Gitの20周年を記念して、GitHubがリーナス・トーバルズ氏に対するインタビューを実施しています。
Git turns 20: A Q&A with Linus Torvalds - The GitHub Blog
https://github.blog/open-source/git/git-turns-20-a-qa-with-linus-torvalds/
GitはLinuxの生みの親であるトーバルズ氏によって開発されたバージョン管理ソフトウェアで、Gitの最初のコミットは現地時間の2005年4月7日です。当時、Linuxカーネルの開発プロジェクトではバージョン管理ソフトウェアとして「BitKeeper」を用いていましたが、ライセンス上の問題でBitKeeperが使用不可能となったことを受けてトーバルズ氏がGitをわずか10日で開発したエピソードは有名です。
Gitの最初のコミットはGitHub上で管理されているミラーリポジトリで参照可能。コミットメッセージには「地獄からやって来た情報マネージャー『Git』の最初のバージョン(Initial revision of "git", the information manager from hell)」と記されています。


そんなGitの20周年を記念して、GitHubがトーバルズ氏に対するインタビューを実施したので、興味深い部分をまとめてみました。
GitHub:
Gitが最初のコミットを書き込める状態になってから20年が経過しました。20年が経過した現時点でもGitを使い続けて話題になり続けるなんてことを予想していましたか?
リーナス・トーバルズ氏(以下、リーナス・トーバルズ):
GitがSCM(ソースコード管理システム)の世界全体をこれほど席巻したことは、大きな驚きでした。私はGitを自分の問題を解決するものだと考えていましたし、もちろん、優れていると考えていました。20年前の今日、Gitがかなり未熟だった段階でさえ、CVSより優れていると考えていました。
同時に、CVSが市場にしがみついているのも見てきました。後にSVNが登場しましたが、それはCVSの別の姿に過ぎません。私はCVSを非常に嫌っていて使いたくありません。だから、自分のやり方でやろうと考えたのです。Bitkeeperが使えなくなり、『自分に合ったやり方でやろう、他人のことは気にしないでおこう』と考えました。Gitは最初の数カ月~数年間は『使いにくい』『直感的でない』というクレームが寄せられていました。その後、何かが起きました。まるでスイッチが入ったかのように。
GitHub:
BitKeeperについて言及されたので、それについて詳しく教えてください。かなり有名な話ですが、トーバルズ氏はGitの初期バージョンを10日ほどで開発しましたよね。
リーナス・トーバルズ:
実際にGitをLinuxカーネルの開発に使えるようになるまでに要した期間は10日ほどでした。しかし、公平に言えば、Gitの開発プロセス全体の始まりは2004年の11月か12月なんです。
当時、BitKeeperはかなりうまく機能していました。BitKeeperは完璧ではありませんでしたが、私が試した他のプロダクトよりはるかに優れていました。しかし、BitKeeperは商用ソフトウェアであったため、Linuxカーネルの開発コミュニティでは全体的に歓迎されていませんでした。(BitKeeperの開発者である)ラリー・マクボイ氏がオープンソースに対して好意的であったため、BitKeeperはオープンソースプロジェクトで使う分には無料でした。一方でマクボイ氏はBitKeeperを大企業に販売したいとも考えていました。BitKeeperがオープンソースではないことや、BitKeeperが最大クラスのオープンソースプロジェクト(Linuxカーネル)で使われていることは、私を含む多くの人にとって一種の障害となっていました。
私はBitKeeperのオープンソースな代替品が登場することを期待していたのですが、実際に登場したのはアンドリュー・トリジェル氏によるBitKeeperのリバースエンジニアリングプロジェクトでした。しかし、BitKeeperのライセンスではリバースエンジニアリングが禁止されており、大きな問題を引き起こすことになりました。私は非公開でマクボイ氏やトリジェル氏とやり取りして解決策を見つけようとしましたが、両氏はまったく正反対の立場を取っており、解決には至りませんでした。
このため、私はGitのコードを書き始める前に「BitKeeperとは異なる方法でBitKeeperよりも優れたことを実行する方法」について4カ月間考えました。マクボイ氏に「君は、すべきでないことをやらかした」と言われるような状況にはなりたくなかったのです。
つまり、Gitを実際に使い始めるまでのコーディング作業は10日くらいでしたが、頭の中であれこれ検討する時間がたくさんあったわけです。


GitHub:
Gitの初期バージョンを開発していた10日間はLinuxカーネルの開発から離れてGitの開発に集中していたということですね。カーネルのことを考えずにGitだけに取り組むのはどんな感じでしたか?
リーナス・トーバルズ:
(Linuxカーネルの開発から離れていたのは)たった2週間だったので大したことはありませんでした。私は過去35年間で数回しか休暇を取っていませんが、カーネルの開発から2週間ほど離れたことは以前にもありました。
Gitを開発していて知ったのは、ユーザー空間でプログラミングを行うことが(カーネルの開発に比べて)はるかに簡単だということです。ユーザー空間でのプログラミングでは、気にするべき事項がはるかに少ないです。メモリの割り当てなどについて心配する必要はありませんでした。
GitHub:
Gitを使う際に、一緒に使うツールはありますか?私は「tig」を使っています。
リーナス・トーバルズ:
私が使ったことがあるGitラッパーは「gitk」のみです。そして、gitkはかなり早い段階でGitに統合されました。私は今でもコマンドでGitを使っており、エディター統合機能などは使っていません。私が使っているエディター(編集部注:トーバルズ氏が使っているエディターは「MicroEMACS」である)はGitどころか何も統合できないほど低機能なので、そういったことは一切行いません。


ときどき、Gitの使用履歴を参照してどんなコマンドを使っているのか確かめています。私は5つのコマンドを多用しています。そのうち3つは「git merge」「git blame」「git log」です。
GitHub:
他の2つは?
リーナス・トーバルズ:
「git commit」と「git pull」です。
GitHub:
Linuxは約34年前に登場し、Gitは20年前に登場しました。次の大きな出来事は何になるでしょう。(これまでのスパンを考えると)5年ほど遅れていることになります。
リーナス・トーバルズ:
私が作らなければならなかったすべてのプロジェクトは、「他の人が作った良いもの」が見つからなかったから作る必要に迫られたのです。私は、他の人に問題を解決してもらうことの方が好きです。私がプロジェクトを考えださなければならないということは、世界の失敗と言えます。そして、この20年間、世界は失敗していません。
Linuxを作り始めたのはOSが必要だったものの満足できるものがなかったからです。Gitも同じ理由で作り始めました。また、ダイビングログソフトウェア「Subsurface」も作りました。Subsurfaceはあまりにも専門的すぎたため、大きく普及することはありませんでした。それらのプロジェクトによって、いくつかの問題は解決しました。私のコンピューターの用途は非常に限られているため、すべての問題が解決したと思っています。


私が特定の方法でしか物事に取り組めないというのも理由の1つです。私は大学時代から同じエディター(MicroEMACS)を使い続けています。指が覚えてしまって、もう変えられないのです。エディターがもうダメなのは分かっています。(MicroEMACSは)誰も使っていない死んだプロジェクトなので、自分で維持しています。
私は(MicroEMACSの)ソースツリーを所持していて、新しいマシンを導入するたび自分専用にコンパイルしています。ソースコードの色分け機能などを備えた新しいエディターを何度も試しましたが、その度に「私の手は、このエディターには古すぎる」と感じます。だから、私に「これをやらねばならない」と思わせるようなプロジェクトが出てこないことを願っています。
なお、GitHubの元ページにはGitの開発初期から現在にかけての裏話が他にも多数記載されています。

元記事を読む