問題
これ
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
commit 3a8461e04c04ed94a64df5d2cd7adbe764a2b8d8
Author: bigwheel <hogehoge@gmail.com>
Date: Tue May 2 02:50:19 2017 +0900
Fix Process output method
同僚に「ちょっとそのコミットのこれ、slack DMで送ってー」なんて言うとき、あると思います。
これをなんと呼ぶか。
自分はコミットハッシュないしコミットIDと呼んできましたがどうやら正しい呼称ではなさそう。
先に結論
Git manual的には コミットのSHA-1
ないし コミット(オブジェクト)?の(オブジェクト名|SHA-1)
が正しい。
もしくはPro Git - Bookには以下の表現もある。
- コミットのSHA-1チェックサム
- コミットのSHA-1ハッシュ
ただし、これそのものだけを他と区別して指す固有の用語はない。Git概念上コミットはオブジェクトの1種であり、Git上のオブジェクトはそれを一意に識別するSHA-1のハッシュ値を必ず持つため、これは必然的に コミットオブジェクトのSHA-1のハッシュ値
であるというだけである。
これはGit利用上の重要度が他のSHA-1のハッシュ値と比べて段違いに高いため、固有の名詞があったほうが良いと思われる。
とりあえず僕はコミットハッシュとしばらく呼ぶことにします。
詳細
公式用語集を当たる
Git - gitglossary Documentation
gitのmanualの用語集の中で関連しそうな項目は以下。
コミット
名詞として: Git履歴上の1点のこと。あるプロジェクトの履歴全体は相互に参照を持った(意訳)コミットの集合として表現されます。この"コミット"という単語はGitではしばしば他のバージョン管理システムでの"リビジョン"や"バージョン"と同じ場所で用いられます。またコミットオブジェクトの省略としても使われます。
動詞として: Git履歴にプロジェクトの状態を新しいスナップショットとして保存するアクションのこと。それは現在のインデックス状態を表す新しいコミットを作り、HEADを新しいコミットのポイントへ進めることで行われます。
コミットオブジェクト
特定のリビジョンについての次のような情報を含むオブジェクトです:
- 親
- コミッター
- オーサー(著者)
- 日付
- 保存されたリビジョンのトップディレクトリに対応した(≒相対パスの、という意味か)ツリーオブジェクト
リビジョン
コミット(名詞)の同義語
オブジェクト
Gitでの保存の単位。これはその中身のSHA-1で一意に識別されます。それ故に、オブジェクトは変更することができません。
オブジェクト名
オブジェクトの一意な識別子。このオブジェクト名はよく40桁の16進文字列で表現されます。また口語ではSHA-1と呼ばれます。
SHA-1
"セキュアハッシュアルゴリズム1"; 暗号化ハッシュ関数です。Gitの文脈ではオブジェクト名の同義語として使われます。
これに従うなら次が正式名称になる。
コミットオブジェクトのオブジェクト名
コミットオブジェクトはコミットという省略、オブジェクト名はSHA-1という同義語があると書いているので正規表現で表記するなら次になる。
コミット(オブジェクト)?の(オブジェクト名|SHA-1)
でも正直なところあれのことをオブジェクト名なんて呼んでいる人・記事を見たことがないし同義語のSHA-1だって「それハッシュアルゴリズムのことじゃないですかwww」って煽られそうである。
Git公式ガイドPro Git - Bookではなんと書かれているか
最初にこれに関する言及があるページはGit - Viewing the Commit History
By default, (中略) this command lists each commit with its SHA-1 checksum, the author’s name and email, the date written, and the commit message.
その他これに関する言及があるページをいくつか拾ってみた。
Single Revisions
You can obviously refer to any single commit by its full, 40-character SHA-1 hash, but there are more human-friendly ways to refer to commits as well.
Because a branch in Git is actually a simple file that contains the 40 character SHA-1 checksum of the commit it points to, branches are cheap to create and destroy.
If you want to pull commit
e43a6
into your master branch, you can run
というわけで、Git公式であるPro Gitですらこれの表現は文脈により毎回異なり、表現のため非常に苦慮していることがわかった。
GitHubはどう扱っているか
コミットID
別名 SHA。コミットを特定する 40 文字のチェックサムハッシュ。
ただし、これはGitの公式の用語集にはない呼称で、GitHub独自の呼び方である。コミットID = CommitのIdentifierというのは間違っていないが・・・。
まとめ
公式の呼称の定義は一応あるもののこれのみを限定して指す固有の用語はない。
またその固有の用語がないことでPro Gitなどでも苦慮している様子が伺える。
僕も含め全世界のエンジニアが同様に困ってそうなので、固有の用語があったほうが良さそう1。
-
邪推するとこれに今まで固有の用語がなかったのはいわゆるPlumbing層が優先されてPorcelain層が軽視されてきたためだと思う ↩