Slide 1

Slide 1 text

Low-level Git

Slide 2

Slide 2 text

Why Low-level Git • GitͷίΞͷ΄͏ͷ࿩ • ͳΜͱͳ͘Ͱ࢖͍ͬͯͨίϚϯυ͕
 Θ͔͖ͬͯͨ • ௐ΂ͯͨΒ͍Ζ͍Ζ͓΋͠Ζ͔ͬͨ

Slide 3

Slide 3 text

Start!!

Slide 4

Slide 4 text

Git Objects

Slide 5

Slide 5 text

> git init

Slide 6

Slide 6 text

> ls .git

Slide 7

Slide 7 text

> find .git/objects

Slide 8

Slide 8 text

create first commit

Slide 9

Slide 9 text

> ls .git/objects

Slide 10

Slide 10 text

3 Objects...? • Commit (f7a253e) • .git/objects/f7/a253ed90a5bb56d6cd8b3580485a7ae23acc88 • ??? (05934ea) • .git/objects/05/934ea69782016b0fbaa7bf46d574cefb039958 • ??? (802992c) • .git/objects/80/2992c4220de19a90767f3000a79a31b98d0df7

Slide 11

Slide 11 text

> git cat-file -t {sha1}

Slide 12

Slide 12 text

Commit/Tree/Blob • Commit (f7a253e) • .git/objects/f7/a253ed90a5bb56d6cd8b3580485a7ae23acc88 • Tree (05934ea) • .git/objects/05/934ea69782016b0fbaa7bf46d574cefb039958 • Blob (802992c) • .git/objects/80/2992c4220de19a90767f3000a79a31b98d0df7

Slide 13

Slide 13 text

Commit? Tree? Blob?

Slide 14

Slide 14 text

> git cat-file commit

Slide 15

Slide 15 text

Commit has... • Reference to ‘a’ Tree Object • Author & Committer • Commit Message ! • (Reference(s) to parent)

Slide 16

Slide 16 text

> git ls-tree

Slide 17

Slide 17 text

Tree has... • Reference to Blob Objects • & File name • & File Permission ! • (Reference to Tree Objects)

Slide 18

Slide 18 text

> git cat-file blob

Slide 19

Slide 19 text

Blob is... • commited file • don’t have a file name

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

merge commit

Slide 22

Slide 22 text

commit has a parent

Slide 23

Slide 23 text

merge commit has parents

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

Question?

Slide 26

Slide 26 text

Reference

Slide 27

Slide 27 text

• alias to commits • ex) • HEAD • master • some_branch • origin/master Reference?

Slide 28

Slide 28 text

Where is Branchs?

Slide 29

Slide 29 text

Where is the HEAD?

Slide 30

Slide 30 text

HEAD -> ref -> commit

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

Question?

Slide 33

Slide 33 text

Reference • ࣮ફ Git - ௿Ϩϕϧʹ஌Δ Git • http://www.slideshare.net/youhei/ git-12695573 • ʲ຋༁ʳGitΛϘτϜΞοϓ͔Βཧղ͢ Δ • http://keijinsonyaban.blogspot.jp/2011/05/

Slide 34

Slide 34 text

appendix

Slide 35

Slide 35 text

example: rename

Slide 36

Slide 36 text

blob is not change