応用ガイド

コミットハッシュとは

コミットを識別するランダムな英数字 ID — 仕組みと確認方法

コミットハッシュとは diagram

コミットハッシュとは

コミットするたびに Git が自動で付ける abc1234ef... のような英数字の ID です。

正式には 40 文字の SHA-1 ハッシュ値ですが、先頭 7 文字程度の省略形で十分にコミットを特定できます。

git log --oneline を実行すると、各行の先頭に表示される短い文字列がそれです。

bash
git log --oneline
# e14fc08 fix: worktree ページの修正
# b7e9a26 feat: worktree/submodule ページ追加
# f92d5a8 refactor: コマンドページの重複削除

なぜランダムな文字列なのか

コミットハッシュは「コミットの内容・作成者・日時・親コミット」をすべて混ぜ合わせて計算されます。

そのため同じ内容のコミットを別の人が別のタイミングで作っても、異なるハッシュになります。

この仕組みのおかげで、世界中の誰がどのリポジトリで作ったコミットでも ID が重複しません。

連番だと複数人での開発で簡単に衝突しますが、ハッシュなら事実上衝突が起きないのです。

どこで使うのか

コミットハッシュは「特定のコミットを指し示す」場面で使います。

場面 コマンド例
コミットの詳細を見る git show abc1234
そのコミットまで戻す git reset --soft abc1234
特定のコミットだけ取り込む git cherry-pick abc1234
2つのコミット間の差分を見る git diff abc1234 def5678

普段は意識する必要はありませんが、過去のコミットを操作するときに「どのコミットか」を指定する手段として登場します。

衝突しないの?

  • SHA-1 は約 2^160 通り(10^48 桁)のパターンがあり、衝突確率は天文学的に低いため、実用上心配する必要はありません。

関連コマンド