Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up
for free
gitの裏側をさぐる
Marina Nakagawa
April 19, 2018
0
240
gitの裏側をさぐる
新人研修で喋った内容です
Marina Nakagawa
April 19, 2018
Tweet
Share
More Decks by Marina Nakagawa
See All by Marina Nakagawa
marina1017
1
1k
marina1017
1
2.3k
marina1017
0
290
marina1017
2
600
marina1017
1
1.2k
marina1017
0
13
marina1017
3
7.3k
marina1017
11
2.3k
Featured
See All Featured
sferik
613
55k
andyhume
64
3.8k
cherdarchuk
71
270k
jmmastey
10
700
imathis
479
150k
brad_frost
157
6.5k
robhawkes
53
2.9k
philhawksworth
192
17k
bkeepers
PRO
322
53k
trishagee
24
3k
yeseniaperezcruz
302
31k
bermonpainter
343
26k
Transcript
1 ͷཪଆΛ͙͞Δ ΞϓϦνʔϜ தສᣦಸ
2 Marina Nakagawa @marina10172013 ຊܦࡁ৽ฉࣾͷiOSΤϯδχΞ ిࢠ൛ΞϓϦɼࢴ໘ϏϡʔΞʔΞϓϦͷ։ൃ
3 git͑ΔΑ͏ʹͳ͖͚ͬͯͨͲɾɾɾ தͰԿ͕ى͍ͬͯ͜Δͷ͔Θ͔Βͳ͍ਓ ରऀ ͋ͷࣈͱจࣈͷཏྻ͕Կ͔Θ͔Βͳ͍ਓ
4 ϋογϡΛݟͯΈΑ͏ SHA-̍ϋογϡ $git log ϑΝΠϧ༰ʹج͍ͮͯܭࢉ͞ΕΔ160Ϗοτʹ ू͞ΕΔϥϯμϜͳ
5 Ͳ͏ͬͯόʔδϣϯཧ͕Ͱ͖Δͷʁ
6 ͨΊͯ͠ΈΑ͏ $mkdir test-git σΟϨΫτϦΛ࡞Δ $cd test-git test-gitͷதʹ͍Δ $ls -A
தͷϑΥϧμΛݟΔ ·ͩԿೖ͍ͬͯ·ͤΜ
7 ͨΊͯ͠ΈΑ͏ $git init Initialized empty Git repository in /Users/nakagawa/Projects/test-git/.git/
GitΛ͑ΔΑ͏ʹ͢Δ $ls -A ϑΥϧμͷதΛݟΔ .gitϑΝΠϧ͕Ͱ͖͍ͯ·͢
8 ͨΊͯ͠ΈΑ͏ $ls .git HEAD config hooks objects branches description
info refs .gitϑΝΠϧͷதΛݟͯΈ·͠ΐ͏
9 ৽͘͠ϑΝΠϧΛ࡞ͬͯaddͯ͠ΈΑ͏ $echo 'hello' > README READMEϑΝΠϧΛͭ͘Γ·͢ $git add README
READMEϑΝΠϧΛadd͠·͢ Index͕Ճ͞Εͨʂ $ls -A .git HEAD config hooks info refs branches description index objects .gitͷϑΝΠϧͷதΛݟͯΈΔ
10 ͓·͚ .git/indexͬͯԿʁ
11 .git/indexͬͯͳΜͩΖ͏ʁ $git ls-files -s ΠϯσοΫεͷΦϒδΣΫτ໊ɺmode bitsɺstage number Λදࣔͤ͞ΔίϚϯυΛ͏ ϑΝΠϧܕ
SHA-1ϋογϡ εςʔδ ϑΝΠϧ໊ 100644 ce013625030ba8dba906f756967f9e9ca394464a 0 README ϑΝΠϧܕͷ100644README͕௨ৗͷϑΝΠϧͰ͋Δ͜ͱΛࣔ͢ εςʔδϚʔδ͢Δͱ͖ͷڝ߹ͷঢ়ଶ (ڝ߹͕͋Δͱ̍Ҏ্ͷεςʔδ 0ͩͱڝ߹ͳ͠) SHA-1ϋογϡϑΝΠϧ༰ʹج͍ͮͯܭࢉ͞ΕΔ160Ϗοτʹू͞ΕΔϥϯμϜͳ ༰͕ҰจࣈͰҧ͏ͱผͷʹͳΔ catͰΈͯΑ͘Θ͔Βͳ͍ͷͰ
12 ΄Μͱʹҧ͏ʹͳΔͷʁ $echo 'hello!' > README $git add README $git
ls-files -s READMEʹॻ͍ͨHelloΛHelle!ͱʂΛͯ͠ΈΑ͏ ϑΝΠϧܕ SHA-1ϋογϡ εςʔδ ϑΝΠϧ໊ 100644 4effa19f4f75f846c3229b9dbdbad14eff362f32 0 README ͔ͨ͠ʹ༰͕ҰจࣈͰҧ͏ͱผͷʹͳΔ
13 Ͳ͏ͯ͠ϋογϡΛ͏ͷʁ όʔδϣϯཧγεςϜಉҰϑΝΠϧͷ༰ͷมԽΛ͢Δͷ͔ͩΒ ϑΝΠϧ༰͕ಉ͡Ͱ͋ΕͲΜͳڥͰ͋ͬͯಉ͡ʹͳΔ ͷ͕߹͕͍͍ ϋογϡ͕ಉ͡=ϑΝΠϧ༰͕ಉ͡
14 Ͳ͏ͬͯϋογϡΛܭࢉ͢Δͷʁ SHA-1ϋογϡ = ϔομʔใʴϑΝΠϧͷ༰ ϔομʔใͱ ϔομʔใɿ֨ೲ͢ΔΦϒδΣΫτܕͱϑΝΠϧ༰ͷαΠζ ΦϒδΣΫτܕͱ ϑΝΠϧblobɺϑΥϧμtreeͱ͍͏ΦϒδΣΫτܕʹͳΔ
15 Ͳ͏ͬͯϋογϡΛܭࢉ͢Δͷʁ ࠓճͷྫͩͱ (ΦϒδΣΫτܕ+σʔλαΠζ) Blob 7 (ϑΝΠϧ༰)σʔλ Hello! $echo 'hello!'
| git hash-object --stdin gitͷػೳͰϋογϡΛग़ͯ͠ΈΔ ಉͩ͡ʂ ͜ͷใΛͬͯSHA-1ϋογϡΛग़ͤΔ
16 ͜ͷϋογϡΛͲ͏͍ͬͯΔͷʁ .git/objectsͷதΛݟͯΈ·͠ΐ͏ $find .git/objects ϋογϡͷ࠷ॳͷೋจࣈαϒϑΥϧμ໊ɺΓͷ38จࣈϑΝΠϧ໊ͱ ͨ͠ύεʹʮblob 7 hello!ʯ͕อଘ͞Ε͍ͯΔ
17 ͜ͷϋογϡΛͲ͏͍ͬͯΔͷʁ ϋογϡͷύεΛݟͯΈ·͠ΐ͏ $cd .git/objects $vi 4e/ffa19f4f75f846c3229b9dbdbad14eff362f32 ͳʹ͜ΕɾɾʁຊʹʮHello!ʯͳͷ? zlibͰѹॖ͞Εͯ͠·͏ͨΊจࣈ֬ೝͰ͖ͳ͍ͷͰͨ͠ɾɾɾ (zlibɺσʔλͷѹॖ͓Αͼ৳ுΛߦ͏ͨΊͷϑϦʔͷϥΠϒϥϦ)
18 ͜ͷϋογϡΛͲ͏͍ͬͯΔͷʁ ѹॖͨ͠σʔλΛղಡͯ͠ΈΑ͏ $git cat-file -t 4effa -t :λΠϓʢΦϒδΣΫτܕʣΛදࣔ ϋογϡ
(ΦϒδΣΫτܕ+σʔλαΠζ) Blob 7 (ϑΝΠϧ༰)σʔλ Hello!
19 ͜ͷϋογϡΛͲ͏͍ͬͯΔͷʁ ѹॖͨ͠σʔλΛղಡͯ͠ΈΑ͏ $git cat-file -s 4effa -s :αΠζΛදࣔ ϋογϡ
(ΦϒδΣΫτܕ+σʔλαΠζ) Blob 7 (ϑΝΠϧ༰)σʔλ Hello!
20 ͜ͷϋογϡΛͲ͏͍ͬͯΔͷʁ ѹॖͨ͠σʔλΛղಡͯ͠ΈΑ͏ $git cat-file -p 4effa -p :༰Λදࣔ ϋογϡ
(ΦϒδΣΫτܕ+σʔλαΠζ) Blob 7 (ϑΝΠϧ༰)σʔλ Hello! ͪΌΜͱσʔλ͕͍Δ
21 Commitͯ͠ΈΑ͏
22 ίϛοτ͢ΔͱͲ͏ͳΔͷʁ ίϛοτͯ͠ΈΑ͏ $git commit -m "1st commit" .git/objectsͷதΛݟͯΈ·͠ΐ͏
(ݕࡧରΛϑΝΠϧͷΈʹݶఆͯ͠ݕࡧ͢ΔΦϓγϣϯΛ͚ͨfindίϚϯυ) $find .git/objects -type f ←hello ←hello! ←ίϛοτͨ͠Β ૿͑ͯΔ?!
23 ૿͑ͨ̎ͭͷϋογϡͳΜͩΖ͏ ίϛοτ͞ΕͨΦϒδΣΫτͷϋογϡͷϦετΛදࣔ͢ΔίϚϯυ $git rev-list --all --objects --format=oneline ←hello!ʹߋ৽ͨ͠ϋογϡ ←ίϛοτͨ͠Β૿͑ͨϋογϡ
24 ૿͑ͨϋογϡͷͷ̍ͭΛݟΔ(treeΦϒδΣΫτ) தΛղಡͯ͠ΈΑ͏ $git cat-file -t 34e600; git cat-file -s
34e600; git cat-file -p 34e600; (ΦϒδΣΫτܕ+σʔλαΠζ) treeΦϒδΣΫτ 34(σʔλαΠζ) (ϑΝΠϧ༰)σʔλ ϑΝΠϧܕ ΦϒδΣΫτܕ SHA-1ϋογϡ ϑΝΠϧ໊ 100644 blob(ϑΝΠϧͷҙ) 4effa19f4f75f846c3229b9dbdbad14eff362f32 README treeΦϒδΣΫτ:34e600920700d3d2d96ff92e3c057a8d24b1f3ed
25 ૿͑ͨϋογϡͷͷ̍ͭΛݟΔ(treeΦϒδΣΫτ) தΛղಡͯ͠ΈΑ͏ $git cat-file -t 34e600; git cat-file -s
34e600; git cat-file -p 34e600; (ΦϒδΣΫτܕ+σʔλαΠζ) treeΦϒδΣΫτ 34(σʔλαΠζ) (ϑΝΠϧ༰)σʔλ ϑΝΠϧܕ ΦϒδΣΫτܕ SHA-1ϋογϡ ϑΝΠϧ໊ 100644 blob(ϑΝΠϧͷҙ) 4effa19f4f75f846c3229b9dbdbad14eff362f32 README ↑Hello!ɹʹมߋͨ͠ίϛοτͩ treeΦϒδΣΫτ:34e600920700d3d2d96ff92e3c057a8d24b1f3ed
26 (ΦϒδΣΫτܕ+σʔλαΠζ) treeΦϒδΣΫτ 34(σʔλαΠζ) (ϑΝΠϧ༰)σʔλ ϑΝΠϧܕ ΦϒδΣΫτܕ SHA-1ϋογϡ ϑΝΠϧ໊ 100644
blob(ϑΝΠϧͷҙ) 4effa19f4f75f846c3229b9dbdbad14eff362f32 README ̋TreeΦϒδΣΫτίϛοτ࣌ͷΠϯσοΫεใ͔Β࡞ΒΕΔ ૿͑ͨϋογϡͷͷ̍ͭΛݟΔ(treeΦϒδΣΫτ) ·ͱΊ (ΦϒδΣΫτܕ+σʔλαΠζ) Blob 7 (ϑΝΠϧ༰)σʔλ Hello! ̋TreeΦϒδΣΫτ࠷ޙʹaddͨ͠ϋογϡʹؔ࿈͚ΒΕ͍ͯΔ ͜ͷσʔλ͔Βϋογϡ͕࡞ΒΕ͍ͯΔ treeΦϒδΣΫτ:34e600920700d3d2d96ff92e3c057a8d24b1f3ed blobΦϒδΣΫτ:4effa19f4f75f846c3229b9dbdbad14eff362f32
27 ૿͑ͨϋογϡͷͷ̍ͭΛݟΔ(commitΦϒδΣΫτ) தΛղಡͯ͠ΈΑ͏ $git cat-file -t 57c0a; git cat-file -s
57c0a; git cat-file -p 57c0a; (ΦϒδΣΫτܕ+σʔλαΠζ) commit(ΦϒδΣΫτ) 195(σʔλαΠζ) (ϑΝΠϧ༰)σʔλ TREE AUTHOR COMMITTER 34e600920700d3d2d96ff92e3c057a8d24b1f3ed Marina Nakagawa Marina Nakagawa commitΦϒδΣΫτ:57c0a4b5d3002202a7b55be6eb3523b992527d09
28 ૿͑ͨϋογϡͷͷ̍ͭΛݟΔ(commitΦϒδΣΫτ) தΛղಡͯ͠ΈΑ͏ $git cat-file -t 57c0a; git cat-file -s
57c0a; git cat-file -p 57c0a; (ΦϒδΣΫτܕ+σʔλαΠζ) commit(ΦϒδΣΫτ) 195(σʔλαΠζ) (ϑΝΠϧ༰)σʔλ TREE AUTHOR COMMITTER 34e600920700d3d2d96ff92e3c057a8d24b1f3ed Marina Nakagawa Marina Nakagawa ↑TreeΦϒδΣΫτͰ͖ͨϋογϡͩ commitΦϒδΣΫτ:57c0a4b5d3002202a7b55be6eb3523b992527d09 CommitΦϒδΣΫτ͍ͭ୭͕ԿͷͨΊʹίϛοτͨ͠ͷ͔͕Θ͔Δ
29 ίϛοτΛ͢ΔͱTreeΦϒδΣΫτͱcommitΦϒδΣΫτ͕࡞͞ΕΔ ίϛοτ͢ΔͱͲ͏ͳΔͷʁ (ΦϒδΣΫτܕ+σʔλαΠζ) commit(ΦϒδΣΫτ) 195(σʔλαΠζ) (ϑΝΠϧ༰)σʔλ TREE AUTHOR COMMITTER
34e600920700d3d2d96ff92e3c057a8d24b1f3ed Marina Nakagawa Marina Nakagawa (ΦϒδΣΫτܕ+σʔλαΠζ) treeΦϒδΣΫτ 34(σʔλαΠζ) (ϑΝΠϧ༰)σʔλ ϑΝΠϧܕ ΦϒδΣΫτܕ SHA-1ϋογϡ ϑΝΠϧ໊ 100644 blob(ϑΝΠϧͷҙ) 4effa19f4f75f846c3229b9dbdbad14eff362f32 README commitΦϒδΣΫτ:57c0a4b5d3002202a7b55be6eb3523b992527d09 treeΦϒδΣΫτ:34e600920700d3d2d96ff92e3c057a8d24b1f3ed (ΦϒδΣΫτܕ+σʔλαΠζ) Blob 7 (ϑΝΠϧ༰)σʔλ Hello! blobΦϒδΣΫτ:4effa19f4f75f846c3229b9dbdbad14eff362f32
30 ͏ҰCommitͯ͠ΈΑ͏
31 ผϑΝΠϧΛͭͬͯ͘ίϛοτ͢ΔͱͲ͏ͳΔͷʁ $mkdir test $cd test $echo 'Hello world' >
sample.md $git add sample.md $git commit -m "2nd commit” testϑΥϧμΛ࡞ͬͯ Hello worldͱॻ͔Εͨsample.mdϑΝΠϧΛͭ͘Δ
32 ίϛοτ͞ΕͨΦϒδΣΫτͷϋογϡͷϦετΛදࣔ͢ΔίϚϯυ $git rev-list --all --objects --format=oneline ผϑΝΠϧΛͭͬͯ͘ίϛοτ͢ΔͱͲ͏ͳΔͷʁ ←TreeΦϒδΣΫτ ←commitΦϒδΣΫτ
33 ૿͑ͨϋογϡͷͷ̍ͭΛݟΔ(treeΦϒδΣΫτ) தΛղಡͯ͠ΈΑ͏ $git cat-file -t e3da65; git cat-file -s
e3da64; git cat-file -p e3da64; (ΦϒδΣΫτܕ+σʔλαΠζ) treeΦϒδΣΫτ 65(σʔλαΠζ) (ϑΝΠϧ༰)σʔλ ϑΝΠϧܕ ΦϒδΣΫτܕ SHA-1ϋογϡ ϑΝΠϧɾϑΥϧμ໊ 100644 blob(ϑΝΠϧͷҙ) 4effa19f4f75f846c3229b9dbdbad14eff362f32 README 40000 tree(ϑΥϧμͷҙ) 3b903ecdee168aad30b478201b8ff9d9b20c6119 test treeΦϒδΣΫτ:e3da64ffcb70336e1313bad123247c9691846bac ←TreeΦϒδΣΫτ
34 ૿͑ͨϋογϡͷͷ̍ͭΛݟΔ(treeΦϒδΣΫτ) தΛղಡͯ͠ΈΑ͏ $git cat-file -t e3da65; git cat-file -s
e3da64; git cat-file -p e3da64; (ΦϒδΣΫτܕ+σʔλαΠζ) treeΦϒδΣΫτ 65(σʔλαΠζ) (ϑΝΠϧ༰)σʔλ ϑΝΠϧܕ ΦϒδΣΫτܕ SHA-1ϋογϡ ϑΝΠϧɾϑΥϧμ໊ 100644 blob(ϑΝΠϧͷҙ) 4effa19f4f75f846c3229b9dbdbad14eff362f32 README 40000 tree(ϑΥϧμͷҙ) 3b903ecdee168aad30b478201b8ff9d9b20c6119 test treeΦϒδΣΫτ:e3da64ffcb70336e1313bad123247c9691846bac ←TreeΦϒδΣΫτ ͜ͷTreeΦϒδΣΫτͰ̎ͭͷSHA-1ϋογϡΛอ͍࣋ͯ͠Δ
35 ૿͑ͨϋογϡͷͷ̍ͭΛݟΔ(treeΦϒδΣΫτ) தΛղಡͯ͠ΈΑ͏ $git cat-file -t e3da65; git cat-file -s
e3da64; git cat-file -p e3da64; (ΦϒδΣΫτܕ+σʔλαΠζ) treeΦϒδΣΫτ 65(σʔλαΠζ) (ϑΝΠϧ༰)σʔλ ϑΝΠϧܕ ΦϒδΣΫτܕ SHA-1ϋογϡ ϑΝΠϧɾϑΥϧμ໊ 100644 blob(ϑΝΠϧͷҙ) 4effa19f4f75f846c3229b9dbdbad14eff362f32 README 40000 tree(ϑΥϧμͷҙ) 3b903ecdee168aad30b478201b8ff9d9b20c6119 test treeΦϒδΣΫτ:e3da64ffcb70336e1313bad123247c9691846bac ←TreeΦϒδΣΫτ ࣍͜ΕΛ͠ΒͯΈ·͢
36 ૿͑ͨϋογϡͷͷ̍ͭΛݟΔ(treeΦϒδΣΫτ) (ΦϒδΣΫτܕ+σʔλαΠζ) treeΦϒδΣΫτ 65(σʔλαΠζ) (ϑΝΠϧ༰)σʔλ ϑΝΠϧܕ ΦϒδΣΫτܕ SHA-1ϋογϡ ϑΝΠϧɾϑΥϧμ໊
100644 blob(ϑΝΠϧͷҙ) 4effa19f4f75f846c3229b9dbdbad14eff362f32 README 40000 tree(ϑΥϧμͷҙ) 3b903ecdee168aad30b478201b8ff9d9b20c6119 test treeΦϒδΣΫτ:e3da64ffcb70336e1313bad123247c9691846bac தΛղಡͯ͠ΈΑ͏ $git cat-file -t 3b903; git cat-file -s 3b903; git cat-file -p 3b903; (ΦϒδΣΫτܕ+σʔλαΠζ) treeΦϒδΣΫτ 37(σʔλαΠζ) (ϑΝΠϧ༰)σʔλ ϑΝΠϧܕ ΦϒδΣΫτܕ SHA-1ϋογϡ ϑΝΠϧɾϑΥϧμ໊ 100644 blob(ϑΝΠϧͷҙ) 802992c4220de19a90767f3000a79a31b98d0df7 sample.md treeΦϒδΣΫτ:3b903ecdee168aad30b478201b8ff9d9b20c6119
37 ૿͑ͨϋογϡͷͷ̍ͭΛݟΔ(treeΦϒδΣΫτ) (ΦϒδΣΫτܕ+σʔλαΠζ) treeΦϒδΣΫτ 65(σʔλαΠζ) (ϑΝΠϧ༰)σʔλ ϑΝΠϧܕ ΦϒδΣΫτܕ SHA-1ϋογϡ ϑΝΠϧɾϑΥϧμ໊
100644 blob(ϑΝΠϧͷҙ) 4effa19f4f75f846c3229b9dbdbad14eff362f32 README 40000 tree(ϑΥϧμͷҙ) 3b903ecdee168aad30b478201b8ff9d9b20c6119 test treeΦϒδΣΫτ:e3da64ffcb70336e1313bad123247c9691846bac தΛղಡͯ͠ΈΑ͏ $git cat-file -t 3b903; git cat-file -s 3b903; git cat-file -p 3b903; (ΦϒδΣΫτܕ+σʔλαΠζ) treeΦϒδΣΫτ 37(σʔλαΠζ) (ϑΝΠϧ༰)σʔλ ϑΝΠϧܕ ΦϒδΣΫτܕ SHA-1ϋογϡ ϑΝΠϧɾϑΥϧμ໊ 100644 blob(ϑΝΠϧͷҙ) 802992c4220de19a90767f3000a79a31b98d0df7 sample.md treeΦϒδΣΫτ:3b903ecdee168aad30b478201b8ff9d9b20c6119 ࣍͜ΕΛ͠ΒͯΈ·͢
38 ૿͑ͨϋογϡͷͷ̍ͭΛݟΔ(blobΦϒδΣΫτ) தΛղಡͯ͠ΈΑ͏ $git cat-file -t 80299; git cat-file -s
80299; git cat-file -p 80299; (ΦϒδΣΫτܕ+σʔλαΠζ) treeΦϒδΣΫτ 12(σʔλαΠζ) (ϑΝΠϧ༰)σʔλ Hello world blobΦϒδΣΫτ:802992c4220de19a90767f3000a79a31b98d0df7 (ΦϒδΣΫτܕ+σʔλαΠζ) treeΦϒδΣΫτ 37(σʔλαΠζ) (ϑΝΠϧ༰)σʔλ ϑΝΠϧܕ ΦϒδΣΫτܕ SHA-1ϋογϡ ϑΝΠϧɾϑΥϧμ໊ 100644 blob(ϑΝΠϧͷҙ) 802992c4220de19a90767f3000a79a31b98d0df7 sample.md treeΦϒδΣΫτ:3b903ecdee168aad30b478201b8ff9d9b20c6119
39 ૿͑ͨϋογϡͷͷ̍ͭΛݟΔ(blobΦϒδΣΫτ) தΛղಡͯ͠ΈΑ͏ $git cat-file -t 80299; git cat-file -s
80299; git cat-file -p 80299; (ΦϒδΣΫτܕ+σʔλαΠζ) treeΦϒδΣΫτ 12(σʔλαΠζ) (ϑΝΠϧ༰)σʔλ Hello world blobΦϒδΣΫτ:802992c4220de19a90767f3000a79a31b98d0df7 (ΦϒδΣΫτܕ+σʔλαΠζ) treeΦϒδΣΫτ 37(σʔλαΠζ) (ϑΝΠϧ༰)σʔλ ϑΝΠϧܕ ΦϒδΣΫτܕ SHA-1ϋογϡ ϑΝΠϧɾϑΥϧμ໊ 100644 blob(ϑΝΠϧͷҙ) 802992c4220de19a90767f3000a79a31b98d0df7 sample.md treeΦϒδΣΫτ:3b903ecdee168aad30b478201b8ff9d9b20c6119 ༰Λมߋͨ͠σʔλ͕Ͱ͖ͯͨ
40 treeΦϒδΣΫτͱblobΦϒδΣΫτͷؔੑΛ·ͱΊΔͱ blobΦϒδΣΫτ:4effa19f4f75f846c3229b9dbdbad14eff362f32 1st commit
41 treeΦϒδΣΫτͱblobΦϒδΣΫτͷؔੑΛ·ͱΊΔͱ blobΦϒδΣΫτ:4effa19f4f75f846c3229b9dbdbad14eff362f32 Hello!ͱ͍͏มߋͳͷͶʂ 1st commitͷঢ়ଶΛ෮ݩͰ͖Δ 1st commit
42 treeΦϒδΣΫτͱblobΦϒδΣΫτͷؔੑΛ·ͱΊΔͱ blobΦϒδΣΫτ:4effa19f4f75f846c3229b9dbdbad14eff362f32 2st commitͷঢ়ଶΛ෮ݩͰ͖Δ 2nd commit
43 TreeΦϒδΣΫτ͑͞Θ͔Ε ͷϑΝΠϧ·ͰͨͲΓண͚Δ
44 TreeΘ͔͚ͬͨͲ CommitԿͷҙຯ͕͋Δͷʁ
45 ίϛοτ͞ΕͨΦϒδΣΫτͷϋογϡͷϦετΛදࣔ͢ΔίϚϯυ $git rev-list --all --objects --format=oneline ←commitΦϒδΣΫτ ೋͭͷίϛοτΦϒδΣΫτΛݟͯΈΑ͏ தΛղಡͯ͠ΈΑ͏
$git cat-file -t e3da65; git cat-file -s e3da64; git cat-file -p e3da64;
46 ೋͭͷίϛοτΦϒδΣΫτΛݟͯΈΑ͏ தΛղಡͯ͠ΈΑ͏ $git cat-file -t cff23; git cat-file -s
cff23; git cat-file -p cff23; (ΦϒδΣΫτܕ+σʔλαΠζ) commit(ΦϒδΣΫτ) 243(σʔλαΠζ) (ϑΝΠϧ༰)σʔλ TREE PARENT AUTHOR COMMITTER e3da64ffcb70336e1313bad123247c9691846bac 57c0a4b5d3002202a7b55be6eb3523b992527d09 Marina Nakagawa Marina Nakagawa commitΦϒδΣΫτ:cff23168b95204aa210c34f95394cafc00db847b
47 ೋͭͷίϛοτΦϒδΣΫτΛݟͯΈΑ͏ தΛղಡͯ͠ΈΑ͏ $git cat-file -t cff23; git cat-file -s
cff23; git cat-file -p cff23; (ΦϒδΣΫτܕ+σʔλαΠζ) commit(ΦϒδΣΫτ) 243(σʔλαΠζ) (ϑΝΠϧ༰)σʔλ TREE PARENT AUTHOR COMMITTER e3da64ffcb70336e1313bad123247c9691846bac 57c0a4b5d3002202a7b55be6eb3523b992527d09 Marina Nakagawa Marina Nakagawa commitΦϒδΣΫτ:cff23168b95204aa210c34f95394cafc00db847b ←͋ΕʁParent͕͍Δ
48 ೋͭͷίϛοτΦϒδΣΫτΛݟͯΈΑ͏ தΛղಡͯ͠ΈΑ͏ $git cat-file -t cff23; git cat-file -s
cff23; git cat-file -p cff23; (ΦϒδΣΫτܕ+σʔλαΠζ) commit(ΦϒδΣΫτ) 243(σʔλαΠζ) (ϑΝΠϧ༰)σʔλ TREE PARENT AUTHOR COMMITTER e3da64ffcb70336e1313bad123247c9691846bac 57c0a4b5d3002202a7b55be6eb3523b992527d09 Marina Nakagawa Marina Nakagawa commitΦϒδΣΫτ:cff23168b95204aa210c34f95394cafc00db847b ←̍ͭલͷίϛοτΛࣔ͢
49 CommitΦϒδΣΫτͱTreeΦϒδΣΫτΛ·ͱΊΔͱ 2nd commit 1st commit ࠷৽ͷίϛοτ͑͞Θ͔Ε࠷ॳͷίϛοτ·Ͱશͯͷྺ࢙Λ͑Δ
50 CommitΦϒδΣΫτͱTreeΦϒδΣΫτΛ·ͱΊΔͱ 2nd commit 1st commit ͦΕͧΕͷίϛοτTreeΦϒδΣΫτͷใΛ͍࣋ͬͯΔͨΊ ͷϑΝΠϧ·ͰͨͲΓண͚Δ
51 Commitͱ ̋̍ͭલͷίϛοτͱϓϩδΣΫτϧʔτͷtreeΦϒδΣΫτΛͬͯΔ ̋authorɾcommitterɾίϛοτϝοηʔδͷใ͕Ճ͞Εͨͷ
52 Gitͷཪଆࢀߟࢿྉ ΄΅͜ΕΛৄࡉʹௐͨͷͰ͢