Jun's Blog

Output, activities, memo and etc.

Internal structure of Git

YAPC Asia 2013の「やさしいGitの内部構造」という 講演を見ていたのですが、
Gitの仕組みがほんとにわかりやすくわかって、
Commit, Branch, Tagこの辺も整理できた。

やさしいGitの内部構造

概要と動画
http://yapcasia.org/2013/talk/show/11de44e0-cd2f-11e2-b054-a4966aeab6a4

スライド
http://www.slideshare.net/DQNEO/git-yapcasia2013

個々のCommit Hashは、コミットオブジェクトへのポインタ(単にリファレンスという意味の)で、

$ git cat-file -p xxxxxxxxxxxx(commit hash)
tree xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --> commit objectへのポインタを表すハッシュ
parent xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --> 前のコミットのハッシュ
author Firstname Lastname <xxx@xxx.xxx> 1383195800 +0800
committer  Firstname Lastname <xxx@xxx.xxx>  1383195800 +0800

以下のコマンドでオブジェクトグラフが見られる

$ git ls-tree HEAD

Tag, BranchはCommit Hashの別名。

内部構造がわかると応用がきくね。