疑問
Gitを使うときには事前に次のユーザ情報の登録が必要だ。
- ユーザ名
- メールアドレス
面倒くさがりの私は、ユーザ名だけ登録してGitのコマンドをコンソールに打ち込んでみた。
すると、次のエラーが出た。
Author identity unknown
*** Please tell me who you are.
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
fatal: unable to auto-detect email address (got '(中略).(none)')
要するに
メールアドレスを登録してね
ということらしい。
GitHubで必要なら分かる。
でも今使おうとしているのはGit単体だ。
特にメールアドレスが必要な場面は思い当たらないけど、メールアドレスって必須だったの!?
と衝撃を受けた。
いや、メールアドレスってコミット情報に埋め込まれるじゃん
って思う?
いやいや、そういうことじゃないんだ。
そもそも何故コミット情報にメールアドレスを埋め込む仕様にしなくてはならなかったのかという話だ。
疑問に思った。
調べてみた
同じ疑問を抱いた人は結構いるらしい。
まずここ
https://forum.kicad.info/t/why-use-a-real-email-address-in-git/24644/9
回答に理由っぽいものが挙げられていた。
- GitHubとかGitLabとか、Gitを使うすべてのサービスでアカウント情報に統一性を持たせるため。
- コミットした人に連絡がとれるようにするため。
なるほどなるほど。
GitはGitHubとかのサービスの中で使われることを前提に設計されているのだそうだ。
でも2番目の「コミットした人に連絡」できる状態というのは何だか怖いとも感じる。
次にここ
https://www.quora.com/Are-name-and-email-address-mandatory-for-using-Git
曰く
- 現実世界で個人を識別するものが氏名であるように、オンラインの世界ではユーザ名とメールアドレスの組み合わせが普遍的に使われている。Gitはそれにならっている。
- ユーザ名だけでは名前が他の人と被ることが多く、個人の識別に適さない。
- コードの書いた人やコミットした人が誰であるかを特定できるようにするため。”メールアドレス”は一意であれば何でもよい。
なるほどなるほど。
現実世界であれば、
日本 長野県茅野市北山湯川 に住んでいる もち
とかで個人を識別できるけど、
ソフトウェア(殊、インターネット)の世界には物理的な住所と呼べるものがないので、
代わりにメールアドレスを使っているということだそうだ。
まとめ
Git単体だけで考えたら、コードの作者やコミッターが誰なのかが特定できれば何でも良くて、
メールアドレスでなくても良かったんだけど、
インターネット上で個人を特定する方法としてよく使われているメールアドレスがGitでは採用されたという理解でよさそうだ。
「システムルートなどに使っている重要なメールアドレスを使ったら簡単に漏洩してしまって大変なことになるよ」
という心配事もあるだろうけど、そこはまた別の議論になるのでこの記事では割愛。