実用Git
- 作者: Jon Loeliger,吉藤英明(監訳),本間雅洋,渡邉健太郎,浜本階生
- 出版社/メーカー: オライリージャパン
- 発売日: 2010/02/19
- メディア: 大型本
- 購入: 7人 クリック: 287回
- この商品を含むブログ (45件) を見る
三冊目のGit本。そしてこの本もすごい。とりあえず4章を写経。オブジェクトにはブロブ、ツリー、コミット、タグの4種類ある。
$ mkdir /tmp/hello $ cd /tmp/hello/ $ git init //リポジトリを初期化 Initialized empty Git repository in /private/tmp/hello/.git/ $ find . . ./.git ./.git/config ./.git/description ./.git/HEAD ./.git/hooks ./.git/hooks/applypatch-msg.sample ./.git/hooks/commit-msg.sample ./.git/hooks/post-commit.sample ./.git/hooks/post-receive.sample ./.git/hooks/post-update.sample ./.git/hooks/pre-applypatch.sample ./.git/hooks/pre-commit.sample ./.git/hooks/pre-rebase.sample ./.git/hooks/prepare-commit-msg.sample ./.git/hooks/update.sample ./.git/info ./.git/info/exclude ./.git/objects ./.git/objects/info ./.git/objects/pack ./.git/refs ./.git/refs/heads ./.git/refs/tags $ echo "hello world" > hello.txt $ git add hello.txt $ find .git/objects/ .git/objects/ .git/objects//3b .git/objects//3b/18e512dba79e4c8300dd08aeb37f8e728b8dad //3b18451がブロブオブジェクト .git/objects//info .git/objects//pack $ git rev-parse 3b18e 3b18e512dba79e4c8300dd08aeb37f8e728b8dad $ git cat-file -p 3b18e512dba79e4c8300dd08aeb37f8e728b8dad hello world $ git ls-files -s 100644 3b18e512dba79e4c8300dd08aeb37f8e728b8dad 0 hello.txt $ git write-tree 68aba62e560c0ebc3396e8ae9335232cd93a3f60 //68aba62がツリーオブジェクト $ find .git/objects/ .git/objects/ .git/objects//3b .git/objects//3b/18e512dba79e4c8300dd08aeb37f8e728b8dad .git/objects//68 .git/objects//68/aba62e560c0ebc3396e8ae9335232cd93a3f60 .git/objects//info .git/objects//pack $ git cat-file -p 68aba6 100644 blob 3b18e512dba79e4c8300dd08aeb37f8e728b8dad hello.txt //ツリーオブジェクト68aba62にブロブオブジェクト3b18451が含まれている $ pwd /tmp/hello $ mkdir subdir $ cp hello.txt subdir/ $ git add subdir/hello.txt $ find .git/objects/ //hello.txtは同内容なのでブロブオブジェクトが増えてない。 .git/objects/ .git/objects//3b .git/objects//3b/18e512dba79e4c8300dd08aeb37f8e728b8dad .git/objects//68 .git/objects//68/aba62e560c0ebc3396e8ae9335232cd93a3f60 .git/objects//info .git/objects//pack $ git write-tree 492413269336d21fac079d4a4672e55d5d2147ac //ツリーオブジェクト作成 $ git cat-file -p 4924132 //ツリーオブジェクト4924132にはブロブオブジェクト3b18451とツリーオブジェクト68aba62が含まれている 100644 blob 3b18e512dba79e4c8300dd08aeb37f8e728b8dad hello.txt 040000 tree 68aba62e560c0ebc3396e8ae9335232cd93a3f60 subdir $ find .git/objects/ .git/objects/ .git/objects//3b .git/objects//3b/18e512dba79e4c8300dd08aeb37f8e728b8dad .git/objects//49 .git/objects//49/2413269336d21fac079d4a4672e55d5d2147ac .git/objects//68 .git/objects//68/aba62e560c0ebc3396e8ae9335232cd93a3f60 .git/objects//info .git/objects//pack $ echo -n "Commit a file that says hello\n" | git commit-tree 492413269336d21fac079d4a4672e55d5d2147ac //コミットオブジェクト作成 d3d44ff23d19640927372ab015555fd1608c96b8 $ git cat-file -p d3d44ff //コミットオブジェクトd3d44ffにはツリーオブジェクト4924132が含まれている tree 492413269336d21fac079d4a4672e55d5d2147ac author ... committer ... Commit a file that says hello $ git tag -m "Tag version 1.0" V1.0 d3d44ff //タグうち $ git rev-parse V1.0 fe62f3f8418b24a256def3d14bd52962b5fe89f3 //タグオブジェクト作成 $ git cat-file -p fe62f3f //タグオブジェクトfe62f3fにはコミットオブジェクトd3d44ffが含まれている object d3d44ff23d19640927372ab015555fd1608c96b8 type commit tag V1.0 tagger ... Tag version 1.0