Slide 1

Slide 1 text

Gitʹ͍ͭͯߟ͑Δͱ͖ʹ ๻͕ߟ͑Δ͜ͱ CC 3.0 BY-SA ESM > SP > AGG ॾڮګհ

Slide 2

Slide 2 text

ࠓ೔ͷຊ୊͡Όͳ͍͜ͱ •ϒϥϯνઓུ •mergeͱrebaseͷҧ͍ •Subversionͱ͔CVSͱ͔ͱͷൺֱ •όʔδϣϯ؅ཧͱ͸

Slide 3

Slide 3 text

ΰʔϧ

Slide 4

Slide 4 text

Git ΛϘτϜΞοϓ͔Βཧղ͢Δ http://keijinsonyaban.blogspot.com/2011/05/git.html ίϛοτΛཧղ͢Δ͜ͱ͸(JUΛཧ ղ͢Δ伴ͩɻ͋ͳͨͷ৺͕ίϛοτͷ τϙϩδΛͨͩड༰͢Δ࣌ɺϒϥϯ νɺλάɺϩʔΧϧˍϦϞʔτϦϙδ τϦ౳ͷࠞཚ͸ஔ͖ڈΓʹ͞Εɺ͋ͳ ͨ͸ӥஐ͋Δષɾϒϥϯνϯάͷ஍ฏ ΁ͱୡͨ͠ͷΛ஌ΔͩΖ͏ɻ

Slide 5

Slide 5 text

ཁ໿

Slide 6

Slide 6 text

Git ΛϘτϜΞοϓ͔Βཧղ͢Δ http://keijinsonyaban.blogspot.com/2011/05/git.html ͭ·Γ(JUͰ͸ɺੈք͸γϯϓϧͳ ίϛοτΦϒδΣΫτͷू߹Ͱ͋Γɺ ͦΕͧΕͷίϛοτΦϒδΣΫτ͕ଞ ͷUSFF΍CMPCΛࢀর͢ΔUSFFΛ อ࣋͠ɺCMPCʹ͸σʔλ͕อ؅͞Ε ͍ͯΔɻ͜ΕΑΓ΋ෳࡶͳશͯ͸ɺ୯ ʹ༻ޠతͳ০Γʹ͗͢ͳ͍ɻ

Slide 7

Slide 7 text

imagine "File System" / Users moro hello.txt foo README lib foo.rb bin foo directory file

Slide 8

Slide 8 text

/ Users moro hello.txt foo README lib foo.rb bin foo / Users moro hello.txt foo README lib foo.rb bin foo v1 v2

Slide 9

Slide 9 text

/ Users moro hello.txt foo README lib foo.rb bin foo / Users moro hello.txt foo README lib foo.rb bin foo v1 v2 / Users moro hello.txt foo README lib foo.rb bin foo v3

Slide 10

Slide 10 text

•σΟϨΫτϦ •ͿΒԼ͕͍ͬͯΔϑΝΠϧ΍σΟϨΫ τϦͷ৘ใΛอ࣋͢Δ •ϑΝΠϧ •தʹ"࣮"Ͱ͋ΔσʔλΛอ࣋͢Δ

Slide 11

Slide 11 text

•commit •tree •blob

Slide 12

Slide 12 text

• commit • tree • ͿΒԼ͕͍ͬͯΔblob΍treeͷ৘ใΛ อ࣋͢Δ • blob • தʹ"࣮"Ͱ͋ΔσʔλΛอ࣋͢Δ

Slide 13

Slide 13 text

/ Users moro hello.txt foo README lib foo.rb bin foo / Users moro hello.txt foo README lib foo.rb bin foo v1 v2 தͷblob΍tree͕มΘΔͱɺͦͷtree΋มΘΔ

Slide 14

Slide 14 text

/ Users moro hello.txt foo README lib foo.rb bin foo / Users moro hello.txt foo README lib foo.rb bin foo v1 v2 தͷblob΍tree͕มΘΔͱɺͦͷtree΋มΘΔ ͱɺͦͷ਌ͷtree΋มΘΔ

Slide 15

Slide 15 text

/ Users moro hello.txt foo README lib foo.rb bin foo / Users moro hello.txt foo README lib foo.rb bin foo v1 v2 / Users moro hello.txt foo README lib foo.rb bin foo v3

Slide 16

Slide 16 text

•tree ͕Θ͔Ε͹ؚ·ΕΔtreeͱblob͕ Θ͔Δ •೚ҙͷόʔδϣϯΛ෮ݩͰ͖Δ •ࠜͬ͜(root)ͷtree͕Θ͔Ε͹Ұࣜ෮ ݩͰ͖Δ

Slide 17

Slide 17 text

$ git status commit a4d1f1bdc3822432bc94cf68d0bffb095264a004 Merge: 40e5867 b339846 Author: Kenichi TAKAHASHI Date: 2011-11-08 17:49:09 -0800 Merge pull request #8 from esminc/tapp-grep-filter-gemfile filter Gemfile on tapp grep (thanks kakutani) $ git ls-tree HEAD 100644 blob 476fcf245ea98e5b53c1bab8e4649fded29deafb .gitignore 100644 blob 8ced21a16d6f7a27031f42b42ed50c58ccd0437b CHANGELOG.md 100644 blob 7ca6519299b1f11b9b40e6e47ff82ccb1318a9c6 Gemfile 100644 blob 3b2c28480b4333df5d64316fb185776f31a64aaa LICENSE 100644 blob bb91262ae86a22e7e943c2fef7d2ed6a3f5a3850 README.rdoc 100644 blob c702cfccca1ced72a75bfd5b26e5e91d71c40b9f Rakefile 040000 tree a7b194b502ea1c0a1c351c057bc79c350b2ea9c7 bin 040000 tree a58e4002624c16f977f4a9bdcb3dbb7bdfdae407 lib 100644 blob 659747ab02ba3d057cb61df2c9ea4dc49e84b182 tapp.gemspec $ git ls-tree HEAD:lib 100644 blob 831db79304eeb1f41920b2c41074c4c9a8980ef9 tapp.rb 040000 tree 958acbdfa5bbb4cb6b42c2020d49e9934b1c69b8 tapp $ git ls-tree HEAD:lib/tapp 100644 blob fca06de5860379429be9e81b7efd087387f26f6b command.rb 100644 blob baaf6dd99cd986f245152ec19b315f0d13d097ad version.rb

Slide 18

Slide 18 text

rootͳtreeͷ Έ͚͔ͭͨ

Slide 19

Slide 19 text

• commit • ͍ͭɾ୭͕ɾͲͷcommitͷࢠͱͯ͠ • ࠜͬ͜ͷtree(ʹͿΒԼ͕ΔtreeͱblobҰࣜ) Λ࡞͔ͬͨ • tree • blob

Slide 20

Slide 20 text

$ git cat-file commit HEAD tree 616ecd5707ab2e0c2902ce75da7040a0bea30ed4 parent 40e58671aed9266f55fc4a93b746caf30bc13fc4 parent b339846bd6e592f6d5d1911e4a9a9332f0b07255 author Kenichi TAKAHASHI 1320803349 -0800 committer Kenichi TAKAHASHI 1320803349 -0800 Merge pull request #8 from esminc/tapp-grep-filter-gemfile filter Gemfile on tapp grep (thanks kakutani) $ git ls-tree 616ecd5707ab2 100644 blob 476fcf245ea98e5b53c1bab8e4649fded29deafb .gitignore 100644 blob 8ced21a16d6f7a27031f42b42ed50c58ccd0437b CHANGELOG.md 100644 blob 7ca6519299b1f11b9b40e6e47ff82ccb1318a9c6 Gemfile 100644 blob 3b2c28480b4333df5d64316fb185776f31a64aaa LICENSE 100644 blob bb91262ae86a22e7e943c2fef7d2ed6a3f5a3850 README.rdoc 100644 blob c702cfccca1ced72a75bfd5b26e5e91d71c40b9f Rakefile 040000 tree a7b194b502ea1c0a1c351c057bc79c350b2ea9c7 bin 040000 tree a58e4002624c16f977f4a9bdcb3dbb7bdfdae407 lib 100644 blob 659747ab02ba3d057cb61df2c9ea4dc49e84b182 tapp.gemspec

Slide 21

Slide 21 text

$ git status commit a4d1f1bdc3822432bc94cf68d0bffb095264a004 Merge: 40e5867 b339846 Author: Kenichi TAKAHASHI Date: 2011-11-08 17:49:09 -0800 Merge pull request #8 from esminc/tapp-grep-filter-gemfile filter Gemfile on tapp grep (thanks kakutani) $ git ls-tree HEAD 100644 blob 476fcf245ea98e5b53c1bab8e4649fded29deafb .gitignore 100644 blob 8ced21a16d6f7a27031f42b42ed50c58ccd0437b CHANGELOG.md 100644 blob 7ca6519299b1f11b9b40e6e47ff82ccb1318a9c6 Gemfile 100644 blob 3b2c28480b4333df5d64316fb185776f31a64aaa LICENSE 100644 blob bb91262ae86a22e7e943c2fef7d2ed6a3f5a3850 README.rdoc 100644 blob c702cfccca1ced72a75bfd5b26e5e91d71c40b9f Rakefile 040000 tree a7b194b502ea1c0a1c351c057bc79c350b2ea9c7 bin 040000 tree a58e4002624c16f977f4a9bdcb3dbb7bdfdae407 lib 100644 blob 659747ab02ba3d057cb61df2c9ea4dc49e84b182 tapp.gemspec $ git ls-tree HEAD:lib 100644 blob 831db79304eeb1f41920b2c41074c4c9a8980ef9 tapp.rb 040000 tree 958acbdfa5bbb4cb6b42c2020d49e9934b1c69b8 tapp $ git ls-tree HEAD:lib/tapp 100644 blob fca06de5860379429be9e81b7efd087387f26f6b command.rb 100644 blob baaf6dd99cd986f245152ec19b315f0d13d097ad version.rb

Slide 22

Slide 22 text

/ Users moro hello.txt foo README lib foo.rb bin foo / Users moro hello.txt foo README lib foo.rb bin foo v1 v2 / Users moro hello.txt foo README lib foo.rb bin foo v3 tree: abc efgh5678 tree: def tree: xyz hello world! v1ͷࢠͱͯ͠ɺ2011-11-11ʹͰ͖ͨΑɻ த਎͸tree: def͔ΒͨͲΕΔΑ v2ͷࢠͱͯ͠ɺ2011-11-12ʹͰ͖ͨΑɻ த਎͸tree: xyz͔ΒͨͲΕΔΑ

Slide 23

Slide 23 text

•commit͕Θ͔Ε͹root tree͕Θ͔Δ •root tree͕Θ͔Ε͹ͿΒԼ͕Δtreeͱ blob͕Θ͔Δ •treeͱblob͕Θ͔Ε͹ϑΝΠϧͱσΟ ϨΫτϦͱͯ͠औΓग़ͤΔ Ͳ͏ͯ͠commit͕େࣄ͔

Slide 24

Slide 24 text

•commit͕Θ͔Ε͹਌ͷcommit͕Θ ͔Δ •਌ͷcommit͕Θ͔Ε͹ɺͦͷ࣌ͷ ϑΝΠϧ(blob)΍σΟϨΫτϦ(tree)͕ Θ͔Δ •ཤྺΛ؅ཧͰ͖Δ! Ͳ͏ͯ͠commit͕େࣄ͔

Slide 25

Slide 25 text

Git ΛϘτϜΞοϓ͔Βཧղ͢Δ http://keijinsonyaban.blogspot.com/2011/05/git.html

Slide 26

Slide 26 text

Git ΛϘτϜΞοϓ͔Βཧղ͢Δ http://keijinsonyaban.blogspot.com/2011/05/git.html ͭ·Γ(JUͰ͸ɺੈք͸γϯϓϧͳ ίϛοτΦϒδΣΫτͷू߹Ͱ͋Γɺ ͦΕͧΕͷίϛοτΦϒδΣΫτ͕ଞ ͷUSFF΍CMPCΛࢀর͢ΔUSFFΛ อ࣋͠ɺCMPCʹ͸σʔλ͕อ؅͞Ε ͍ͯΔɻ͜ΕΑΓ΋ෳࡶͳશͯ͸ɺ୯ ʹ༻ޠతͳ০Γʹ͗͢ͳ͍

Slide 27

Slide 27 text

commitΛ Ί͙Δ๯ݥ

Slide 28

Slide 28 text

•ͳʹ΋଍͞ͳ͍ •git log •҉໧ͰݱϒϥϯνͷHEAD

Slide 29

Slide 29 text

•HEAD •git log HEAD •ݱϒϥϯνͷHEAD

Slide 30

Slide 30 text

•commitͷsha1 •git log b33984 •શ෦Ͱͳͯ͘΋͍͍

Slide 31

Slide 31 text

•ϒϥϯνͱ͔ •tagͱ͔

Slide 32

Slide 32 text

•ϒϥϯνͬͯͳʹ? •tag͸? •commitͷผ໊

Slide 33

Slide 33 text

•λά •git log rel-2011-01 •λά͕ࢦ͢ίϛοτ

Slide 34

Slide 34 text

•ϒϥϯνͬͯͳʹ? •commitͷੵΈॏͳΓ͕৳ͼ͍ͯ͘ํ ޲Λࢦ͢΋ͷ •tag͸? Ҏޙɺσʔλͱͯ͠ͷcommit object͸commitɺgit commit͢Δ ͜ͱ͸ίϛοτͱݺͼ·͢

Slide 35

Slide 35 text

•git commitͰίϛοτ͢Δͱ •commit ΦϒδΣΫτ͕Ͱ͖Δ •ϒϥϯνͷઌ಄(HEAD) ͕ͦͷcommitΦϒ δΣΫτΛࢦ͢Α͏ʹॻ͖มΘΔ

Slide 36

Slide 36 text

•git checkout <ϒϥϯν>͢Δͱ •ϒϥϯνͷHEAD͕ࢦ͢commit͕ ࢀর͍ͯ͠Δtree͔Βඥ෇͘ιʔε ҰࣜΛworking treeʹల։͢Δɻ

Slide 37

Slide 37 text

•ϒϥϯνͬͯͳʹ? •commitͷੵΈॏͳΓ͕৳ͼ͍ͯ͘ํ ޲Λࢦ͢΋ͷ •ͦͯ͠ଟ͘ͷ৔߹ɺͷͼ͖ͯͨઌ಄ͭ ·ΓHEADΛࢦ͢ •tag͸?

Slide 38

Slide 38 text

•ϒϥϯν໊ •git log cli •ϩʔΧϧϒϥϯνcliͷHEAD

Slide 39

Slide 39 text

•͍֮͑ͯ·͔͢: ͳʹ΋଍͞ͳ͍ •git log •҉໧ͰݱϒϥϯνͷHEAD

Slide 40

Slide 40 text

•ϦϞʔτϒϥϯν໊ •git log origin/cli •ϦϞʔτϦϙδτϦoriginͷ cliϒϥϯνͷHEAD

Slide 41

Slide 41 text

•ϦϞʔτϒϥϯν໊ •git log origin/cli •ϦϞʔτϦϙδτϦoriginͷ cliϒϥϯνͷHEAD

Slide 42

Slide 42 text

remote ϦϞʔτ

Slide 43

Slide 43 text

•ԕ͘ʹ͋Δrepoʹ໊લΛ͚ͭͨ΋ͷ • [email protected]:esminc/tapp.git ͱ͔͍ͭ΋ࢦఆͨ͘͠ͳ͍͠Ͷ •ผͷrepoʹؚ·ΕΔϒϥϯνΛ remotes/#{໊લ} ҎԼʹ͍࣋ͬͯΔ •ࢀরͨ͠ΓɺϩʔΧϧϒϥϯνʹ checkoutͨ͠Γɺpushͨ͠ΓͰ͖Δ

Slide 44

Slide 44 text

•ϦϞʔτ(ͷrepoʹؔ࿈෇͍ͨͪΐͬͱ ಛघͳ)ϒϥϯν •௚઀checkoutͰ͖ͳ͍ (detachedʹͳΔɻڪΖ͠΍…) •git fetch #{repo໊}ͰϦϞʔτͷ commitΛऔಘͰ͖Δ

Slide 45

Slide 45 text

push ϓογϡ

Slide 46

Slide 46 text

•खݩͷcommit(ͨͪɻؚઌ૆)Λ remoteʹૹΓࠐΉ •git push #{repo໊} #{commit} •commitͷࢦఆํ๏͸લड़ͷͱ͓Γ

Slide 47

Slide 47 text

•git log master..origin/master • ϩʔΧϧʹͳ͍ɺ୭͔͕࡞ͬͨίϛοτ • ࠨʹͳͯ͘ӈʹ͋Δcommit

Slide 48

Slide 48 text

•blob(ϑΝΠϧ) •git log origin/master...master:\ path/to/file •origin/masterʹͳͯ͘masterʹ͋ Δpath/to/fileͷมߋΛݟΔ

Slide 49

Slide 49 text

ଓ͖͸ggr "git tree-ish"

Slide 50

Slide 50 text

Git ΛϘτϜΞοϓ͔Βཧղ͢Δ http://keijinsonyaban.blogspot.com/2011/05/git.html ͭ·Γ(JUͰ͸ɺੈք͸γϯϓϧͳ ίϛοτΦϒδΣΫτͷू߹Ͱ͋Γɺ ͦΕͧΕͷίϛοτΦϒδΣΫτ͕ଞ ͷUSFF΍CMPCΛࢀর͢ΔUSFFΛ อ࣋͠ɺCMPCʹ͸σʔλ͕อ؅͞Ε ͍ͯΔɻ͜ΕΑΓ΋ෳࡶͳશͯ͸ɺ୯ ʹ༻ޠతͳ০Γʹ͗͢ͳ͍ɻ

Slide 51

Slide 51 text

Git ΛϘτϜΞοϓ͔Βཧղ͢Δ http://keijinsonyaban.blogspot.com/2011/05/git.html ίϛοτΛཧղ͢Δ͜ͱ͸(JUΛཧ ղ͢Δ伴ͩɻ͋ͳͨͷ৺͕ίϛοτͷ τϙϩδΛͨͩड༰͢Δ࣌ɺϒϥϯ νɺλάɺϩʔΧϧˍϦϞʔτϦϙδ τϦ౳ͷࠞཚ͸ஔ͖ڈΓʹ͞Εɺ͋ͳ ͨ͸ӥஐ͋Δષɾϒϥϯνϯάͷ஍ฏ ΁ͱୡͨ͠ͷΛ஌ΔͩΖ͏ɻ