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の別名。
内部構造がわかると応用がきくね。