Slide 1

Slide 1 text

͔ͨͭΉΓʹ΋Θ͔Δ Git ௒ೖ໳ Keisuke SATO a.k.a. riaf

Slide 2

Slide 2 text

@riaf ࠤ౻Ղ༞ (Keisuke SATO) 1987/9/16 ! ๺ւಓ۴࿏ग़਎ ۴࿏ބྕ → ๺ݟ޻ۀେֶ ! Co-Founder and Engineer at Crocos Inc. ! LOCAL Japan PHP Users Group Sapporo.php ! Love Ohotech !

Slide 3

Slide 3 text

Love Hokkaido, from Tokyo.

Slide 4

Slide 4 text

͔ͨͭΉΓ…ʁ

Slide 5

Slide 5 text

ͳ͔ͥͨͭΉΓ޲͚ͷ࿩Λ͢Δ͜ͱʹͳ͔ͬͨ

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

๻ʹ༩͑ΒΕͨ;ͨͭͷબ୒ࢶ

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

͔ͨͭΉΓ…ʁ

Slide 12

Slide 12 text

͔ͨͭΉΓʹ΋Θ͔Δ Git ௒ೖ໳ Keisuke SATO a.k.a. riaf

Slide 13

Slide 13 text

ͦͷલʹ΋͏Ұݴ

Slide 14

Slide 14 text

Thanks! Ohotech. ελοϑͷํʑɺ͓ർΕ͞·Ͱ͢ɻ ͋Γ͕ͱ͏͍͟͝·͢ɻ ! ԕ͍Ͱ͕͢ɺԠԉ͓ͯ͠Γ·͢ʂ Կ͔͋ͬͨΒ͓ख఻͍͠·͢ͷͰ ͓ؾܰʹʂ

Slide 15

Slide 15 text

͔ͨͭΉΓʹ΋Θ͔Δ Git ௒ೖ໳ Keisuke SATO a.k.a. riaf

Slide 16

Slide 16 text

͸͡Ίʹ

Slide 17

Slide 17 text

Git ͱ͸ ? • GitʢΪοτʣ͸ɺϓϩάϥϜͷιʔείʔυͳͲͷม ߋཤྺΛه࿥ɾ௥੻͢ΔͨΊͷ෼ࢄܕόʔδϣϯ؅ཧ γεςϜͰ͋Δɻ΋ͱ͸LinuxΧʔωϧͷιʔείʔυ ؅ཧʹ༻͍ΔͨΊʹϦʔφεɾτʔόϧζʹΑͬͯ։ ൃ͞ΕɺͦΕҎ߱΄͔ͷଟ͘ͷϓϩδΣΫτͰ࠾༻͞ Ε͍ͯΔɻLinuxΧʔωϧͷΑ͏ͳڊେϓϩδΣΫτʹ ΋ରԠͰ͖ΔΑ͏ʹɺಈ࡞଎౓ʹॏ఺͕ஔ͔Ε͍ͯΔɻ ݱࡏͷϝϯςφϯε͸ᖛ໺७ (Junio C Hamano) ͕୲౰ ͍ͯ͠Δɻ Wikipedia contributors. "Git." Wikipedia. Wikipedia, 9 Mar. 2014. Web. 31 May. 2014.

Slide 18

Slide 18 text

όʔδϣϯΛ؅ཧ͢Δ • ϑΝΠϧͷมߋʢ࡞੒ɾ࡟আʣΛه࿥͢Δ • ͍ͭɺͩΕ͕ɺͲͷΑ͏ʹʁ • ҎલͷόʔδϣϯͷϑΝΠϧΛऔΓग़ͤΔ • όοΫΞοϓతʹ࢖͑Δ

Slide 19

Slide 19 text

ͳͥόʔδϣϯ؅ཧ͕ඞཁͳͷ͔

Slide 20

Slide 20 text

ͳͥόʔδϣϯ؅ཧ͕ඞཁͳͷ͔ ࠷ѱͷࣄଶ

Slide 21

Slide 21 text

ਓ͕ؒ؅ཧ͢Δͷʹ͸ݶք͕͋Δ • ؾ߹͍͕͋Δ͏ͪ͸͍͍Μ͚ͩͲ • Ұ౓खΛൈ͘ͱ஍ࠈͰ͢ • ΈΜͳେମ͍͍ՃݮͩΑͶ

Slide 22

Slide 22 text

ͳͥ Git ͳͷ͔

Slide 23

Slide 23 text

ͳͥ Git ͳͷ͔ • ͍Ζ͍Ζཧ༝͸͋Γ·͕͢ɺ๻͸ • GitHub ͕͋Δ • ΦʔϓϯιʔεͷίϥϘϨʔγϣϯ • Linus ͕࡞ͬͨ • ઃܭ͕γϯϓϧ • ͜ͷ 2 ͕ͭେ͖ͳϙΠϯτ͔ͳͬͯࢥ͍ͬͯ·͢

Slide 24

Slide 24 text

͸͡ΊΑ͏ Git Git Λར༻͢Δʹ͓֮͋ͨͬͯ͑ͯ͘ͱྑ͍ΩʔϫʔυͳͲͳͲ

Slide 25

Slide 25 text

͸͡Ίʹ • Git ͸ GUI ͷΞϓϦ΋͋Γ·͕͢ɺ࣮ࡍʹͲ͏͍͏͜ ͱ͕ߦΘΕΔͷ͔ΛΠϝʔδͰ͖ΔΑ͏ʹͳΔͨΊʹɺ ͜ͷࢿྉͷதͰ͸ίϚϯυΛ͔ͭͬͯઆ໌͠·͢ɻ • GUI ΞϓϦͰͰ͖Δ͜ͱ͸ɺ͢΂ͯ͜ͷίϚϯυ·ͨ ͸ίϚϯυͷ૊Έ߹ΘͤͰ࣮ݱͰ͖·͢ɻ • ͱ͸͍͑ɺσβΠφʔͷํ͸ίϚϯυΛ೔ৗతʹ࢖Θ ͳ͍ਓ͕ଟ͍ͱࢥ͏ͷͰɺ࣮ࡍʹ͸Կ͔͠Βͷιϑτ ͷػೳΛ࢖͏͜ͱ͕ଟ͍ͷ͔ͳͱࢥ͍·͢ɻ

Slide 26

Slide 26 text

͸͡Ίʹ • ͜ͷ͓࿩͸ Git ೖ໳ͱͯ͠·͕͢ɺ͜ͷ࿩Λฉ͍ͨΒ Git ͕࢖͑ΔΑ͏ʹͳΔʂͱ͍͏ΑΓ͸ɺGit ͕Կऀͳ ͷ͔ͪΐͬͱ͚ͩΘ͔Δɻ͘Β͍ͷ͓࿩Ͱ͢ɻ • Git ͷٕज़తͳ͓࿩͸͠·ͤΜɻGit 2.0 ϦϦʔε͞Ε ͨͶʂͱ͔ͷτϐοΫ͸ग़͖ͯ·ͤΜɻ • ༻ޠͷਖ਼͠͞ΑΓɺ఻ΘΓ΍͢͞Λج४ʹݴ༿ΛબͿ ͜ͱ͕͋Γ·͢ɻݰਓ͸ͪΐͬͱͷ͍͋ͩզຫ͍ͯ͠ ͍ͯͩ͘͞ɻ

Slide 27

Slide 27 text

$ ͯ͞ɺ͓ͳ͡Έͷࠇ͍ը໘Ͱ͢ɻ ͜ͷ $ ͸ɺίϚϯυೖྗΛ଴ػ͍ͯ͠Δ ঢ়ଶͩͱࢥ͍ͬͯͩ͘͞ɻ ʢͭ·ΓɺԿ΋ೖྗ͞Ε͍ͯͳ͍ɻͱ͍͏͜ͱͰ͢ʣ

Slide 28

Slide 28 text

$ ls ͯ͞ɺ͓ͳ͡Έͷࠇ͍ը໘Ͱ͢ɻ ls ίϚϯυΛೖྗͨ͠ঢ়ଶͰ͢

Slide 29

Slide 29 text

$ ls ↵ ͯ͞ɺ͓ͳ͡Έͷࠇ͍ը໘Ͱ͢ɻ ΤϯλʔΩʔΛԡͨ͜͠ͱΛ໌֬ʹ͢ΔͨΊʹ ʮ ↵ ʯͷه߸Λ࢖͍ͬͯ·͢ɻ ʢࢿྉ಺ͰపఈͰ͖ͳ͍͔΋͠Εͳ͍͚Ͳ͝ΊΜʣ

Slide 30

Slide 30 text

$ ls ↵ hokkaido.jpg kitami.jpg kushiro.jpg sapporo.txt ͯ͞ɺ͓ͳ͡Έͷࠇ͍ը໘Ͱ͢ɻ ৽ͨͳߦʹදࣔ͞ΕΔͷ͕ ls ίϚϯυͷग़ྗ݁ՌͰ͢ɻ

Slide 31

Slide 31 text

$ echo “ͦΕͰ͸ɺ࢝Ί·͢Αʂ" ↵ ͦΕͰ͸ɺ࢝Ί·͢Αʂ

Slide 32

Slide 32 text

! ! ! ! ! $ mkdir Ohotech ·ͣ͸ɺόʔδϣϯ؅ཧΛ͍ͨ͠σΟϨΫτϦʢϑΥϧ μʣΛ༻ҙ͠·͢ɻ΋ͪΖΜɺطʹ͋Δ΋ͷͰ΋͔·͍ ·ͤΜɻ σΟϨΫτϦΛ࡞ΔίϚϯυ

Slide 33

Slide 33 text

! ! ! ! ! $ mkdir Ohotech ↵ $ cd Ohotech ·ͣ͸ɺόʔδϣϯ؅ཧΛ͍ͨ͠σΟϨΫτϦʢϑΥϧ μʣΛ༻ҙ͠·͢ɻ΋ͪΖΜɺطʹ͋Δ΋ͷͰ΋͔·͍ ·ͤΜɻ σΟϨΫτϦΛ։͘ίϚϯυ

Slide 34

Slide 34 text

! ! ! ! ! $ mkdir Ohotech ↵ $ cd Ohotech ↵ $ git init ·ͣ͸ɺόʔδϣϯ؅ཧΛ͍ͨ͠σΟϨΫτϦʢϑΥϧ μʣΛ༻ҙ͠·͢ɻ΋ͪΖΜɺطʹ͋Δ΋ͷͰ΋͔·͍ ·ͤΜɻ σΟϨΫτϦͷྺ࢙Λ؅ཧ͠ ࢝Ί·͢Αɺͱ͍͏એݴ

Slide 35

Slide 35 text

! ! ! ! ! $ mkdir Ohotech ↵ $ cd Ohotech ↵ $ git init ↵ Initialized empty Git repository in /path/to/ Ohotech/.git/ ·ͣ͸ɺόʔδϣϯ؅ཧΛ͍ͨ͠σΟϨΫτϦʢϑΥϧ μʣΛ༻ҙ͠·͢ɻ΋ͪΖΜɺطʹ͋Δ΋ͷͰ΋͔·͍ ·ͤΜɻ /path/to/Ohotech/.git/ ʹۭͷϦϙδτϦ͕࡞੒͞Ε·͠ ͨɻ “.” (υοτ) ͔Β࢝·ΔϑΝΠϧ໊͸ɺ௨ৗݟ͑ͳ ͍ϑΝΠϧͰ͢ (Windows ͸ؔ܎ͳ͍Ͱ͕͢)

Slide 36

Slide 36 text

! ! ! ! ! $ ls ↵ test.txt $ cat test.txt ↵ This is a pan. $ git add test.txt ↵ ࣍ʹɺԿ͔͠ΒͷϑΝΠϧΛ௥Ճͯ͠Έ·͠ΐ͏ɻ ͜͜Ͱ͸ “test.txt” ͱ͍͏ϑΝΠϧΛ࡞Γ·ͨ͠ɻ ← ϑΝΠϧͷத਎Λදࣔ͢ΔίϚϯυ “test.txt” Λ git Ͱ؅ཧ࢝͠Ί·͢Αɺͱ͍͏એݴ

Slide 37

Slide 37 text

! ! ! ! ! $ git commit -m “test.txt Λ௥Ճ͠·ͨ͠” ↵ ࣍ʹɺʮϑΝΠϧΛ௥Ճͨ͠ʯ͜ͱΛ git ʹه࿥ͤ͞· ͢ɻ git ϦϙδτϦͷঢ়ଶΛه࿥͢ΔίϚϯυ

Slide 38

Slide 38 text

! ! ! ! ! $ git commit -m “test.txt Λ௥Ճ͠·ͨ͠” ↵ ࣍ʹɺʮϑΝΠϧΛ௥Ճͨ͠ʯ͜ͱΛ git ʹه࿥ͤ͞· ͢ɻ มߋʹରͯ͠ίϝϯτΛ͚͍ͭͯ·͢ɻ

Slide 39

Slide 39 text

! ! ! ! ! $ git commit -m “test.txt Λ௥Ճ͠·ͨ͠” ↵ [master (root-commit) 026c173] test.txt Λ௥Ճ͠· ͨ͠ 1 file changed, 1 insertion(+) create mode 100644 test.txt ࣍ʹɺʮϑΝΠϧΛ௥Ճͨ͠ʯ͜ͱΛ git ʹه࿥ͤ͞· ͢ɻ 1 ͭͷϑΝΠϧ͕มߋ͞Εɺ 1 ߦ͕௥Ճ͞Ε·ͨ͠ɻ

Slide 40

Slide 40 text

มߋΛه࿥͢Δͱ͍͏͜ͱ • جຊతʹ͸ɺ͜ͷҰ࿈ͷૢ࡞Λߦ͏͜ͱͰʮ͍ͭʯʮͩ Ε͕ʯʮͲͷΑ͏ͳʯมߋΛߦ͔ͬͨΛه࿥͢Δ͜ͱ ͕Ͱ͖·͢ɻ • ग़͖ͯͨίϚϯυ͸ • git init - git ϦϙδτϦΛ࡞Δ • git add - ؅ཧ͢ΔϑΝΠϧΛ௥Ճ͢Δ • git commit - มߋΛه࿥͢Δ

Slide 41

Slide 41 text

มߋΛه࿥͢Δͱ͍͏͜ͱ • ʮ͑ɺฅΊΜͲͤ͑͘…ʯͱࢥ͔ͬͨ΋͠Ε·ͤΜ͕ɺ ׳Ε·͢ɻ • Ή͠Ζ git ͕ͳ͍ͱෆ҆ʹͳΓ·͢ɻ • มߋ͕ه࿥͞Εͳ͍ͳΜͯɺා͍…ʂ • มߋ͕ه࿥͞Ε͍ͯΔͱ͍͏͜ͱ͸ɺ͍ͭͰ΋ͦͷه࿥ ʹ໭ΕΔͱ͍͏͜ͱͰ͢ɻ • ήʔϜͰ΋ॏཁͳηʔϒϙΠϯτͰ͢Ͷɻηʔϒ͠ͳ͍༐ ऀ΋ډΔ͔΋͠Ε·ͤΜ͕ɻ

Slide 42

Slide 42 text

! ! $ cat test.txt ↵ This is a pan. ! ! pan Ͱ͸ͳ͘ pen ͩͬͨ͜ͱʹؾ͕͖ͭ·ͨ͠ɻ

Slide 43

Slide 43 text

! ! $ cat test.txt ↵ This is a pan. ! ! ! $ cat test.txt ↵ This is a ΃Μ. pan Ͱ͸ͳ͘ pen ͩͬͨ͜ͱʹؾ͕͖ͭ·ͨ͠ɻ ௚ͯ͠Έ·͢ɻ

Slide 44

Slide 44 text

! ! $ cat test.txt ↵ This is a pan. ! ! ! $ cat test.txt ↵ This is a ΃Μ. ! ! ! ! $ git checkout test.txt ↵ $ cat test.txt ↵ This is a pan. pan Ͱ͸ͳ͘ pen ͩͬͨ͜ͱʹؾ͕͖ͭ·ͨ͠ɻ ௚ͯ͠Έ·͢ɻ ͪΌΜͱ௚ͨͭ͠΋Γ͕ɺͳΜ͔ؒҧ͍͑ͯ·ͨ͠ɻ ͍ͬͨΜ࠷ॳͷঢ়ଶʹ໭ͨ͘͠ͳΓ·ͨ͠ɻ

Slide 45

Slide 45 text

! ! $ cat test.txt ↵ This is a pen. ! ! ͜ΜͲ͸ͪΌΜͱ௚ͦ͏ͱࢥ͍·͢ɻ

Slide 46

Slide 46 text

! ! $ cat test.txt ↵ This is a pen. ! ! ! $ git add test.txt ↵ $ git commit -m “৯ཉશ։ͩͬͨͷͰमਖ਼͠·ͨ͠” ↵ [master 25ea33c] ৯ཉશ։ͩͬͨͷͰमਖ਼͠·ͨ͠ 1 file changed, 1 insertion(+), 1 deletion(-) ͜ΜͲ͸ͪΌΜͱ௚ͦ͏ͱࢥ͍·͢ɻ มߋΛه࿥͠·͢ɻϑΝΠϧͷ௥ՃͱҰॹͰ͢ɻ

Slide 47

Slide 47 text

! ! ! ! $ git log ↵ commit 25ea33ceace1a46c258d7119281164427ab0cebd Author: Keisuke SATO Date: Fri May 30 20:44:03 2014 +0900 ! ৯ཉશ։ͩͬͨͷͰमਖ਼͠·ͨ͠ ! commit 026c173f1e8bc13a6fc0a7116792a32feb9dd31f Author: Keisuke SATO Date: Fri May 30 20:28:02 2014 +0900 ! test.txt Λ௥Ճ͠·ͨ͠ ͜͜Ͱɺࠓ·Ͱ͜ͷϦϙδτϦͰͲͷΑ͏ͳมߋ͕ߦΘ Ε͍ͯͨͷ͔Λ֬ೝͨ͘͠ͳͬͨͱ͠·͢ɻ ίϛοτ͸ϋογϡ஋Ͱه࿥͞Ε͍ͯ·͢ɻ มߋΛಛఆ͢Δ ID ͷ༻ͳ΋ͷͰ͢ɻ ʮ25ea33c… ͷίϛοτʯ

Slide 48

Slide 48 text

! ! ! $ git show 25ea33ceace1a46c258d7119281164427ab0cebd ↵ commit 25ea33ceace1a46c258d7119281164427ab0cebd Author: Keisuke SATO Date: Fri May 30 20:44:03 2014 +0900 ! ৯ཉશ։ͩͬͨͷͰमਖ਼͠·ͨ͠ ! diff --git a/test.txt b/test.txt index a938556..149bbea 100644 --- a/test.txt +++ b/test.txt @@ -1 +1 @@ -This is a pan. +This is a pen. ͯ͞ɺͦͷมߋ͸ԿΛߦͬͨͷͰ͠ΐ͏͔ɻ

Slide 49

Slide 49 text

มߋΛه࿥͢Δͱ͍͏͜ͱ • ه࿥͞Εͨมߋ͸ɺޙ͔Β͔͞ͷ΅ͬͯ֬ೝ͢Δ͜ͱ ͕Ͱ͖·͢ɻ • ͓͔͠ͳ͜ͱ͕͓ͬͯ͜΋؆୯ʹಛఆͰ͖·͢ɻ • ͜ͷޡࣈɺ͍͔ͭΒͩʂʁ • લ͸େৎ෉ͩͬͨͷʹͳΜ͔͓͔͘͠ͳͬͨʂ

Slide 50

Slide 50 text

͜Ε·Ͱͷ͓͞Β͍ • ϦϙδτϦΛ࡞ͬͯ (git init) • ϑΝΠϧΛ௥Ճͯ͠ (git add) • มߋΛه࿥͢Δ (git commit) • ه࿥ͨ͠ϑΝΠϧʹஔ͖׵͑Δ (git checkout) • ޙ͔ΒมߋΛ֬ೝ͢Δ (git log / git show)

Slide 51

Slide 51 text

ΈΜͳͰ࢖͏ Git

Slide 52

Slide 52 text

1ਓͰ࢖͏ͷ΋͍͍ΜͰ͕͢ • όʔδϣϯ؅ཧͷྗΛ΋ͬͱ׆༻͢Δʹ͸΍ͬͺΓෳ ਺ਓͰ͍Ζ͍Ζ͍͡Δͱ͖Ͱ͢ɻ • ͔͜͜Β͸࣮ࡍͷಈ࡞ͱ͍͏ΑΓ͸ɺ׆༻͢ΔΠϝʔ δΛϝΠϯʹෳ਺ਓͰ Git Λ࢖͏ͱ͖ͷ͓࿩Λ͠·͢ɻ • ࣮ࡍʹ΍Δ͜ͱ͸جຊతʹ͜Ε·Ͱग़͖ͯͨ͜ͱ͕΄ ͱΜͲͰ͢ɻ

Slide 53

Slide 53 text

มߋͷྺ࢙ git init มߋ A มߋ B

Slide 54

Slide 54 text

ϒϥϯν A B A’ B’ • git branch

Slide 55

Slide 55 text

ϒϥϯνͷϚʔδ A B A’ B’ C (A’, B’) • git merge

Slide 56

Slide 56 text

rebase A B A’ B’ • git rebase • Ͳͷίϛοτ͔Βϒϥϯ νΛ࡞੒ͨ͠ͷ͔ɺΛվ ͟Μ͢Δ

Slide 57

Slide 57 text

rebase A B A’ B’ • git rebase • Ͳͷίϛοτ͔Βϒϥϯ νΛ࡞੒ͨ͠ͷ͔ɺΛվ ͟Μ͢Δ

Slide 58

Slide 58 text

ಉ࣌ʹ͍ΖΜͳมߋ͕Ͱ͖ͯศརͳͷ͸ྑ͍͕ɺ Ͳ͏΍ͬͯڞ༗͢ΜͶΜɻ

Slide 59

Slide 59 text

ϦϙδτϦΛڞ༗͢Δ

Slide 60

Slide 60 text

ϦϙδτϦΛڞ༗͢Δ Pull Push

Slide 61

Slide 61 text

ϦϙδτϦΛڞ༗͢Δ Pull Push

Slide 62

Slide 62 text

ϦϙδτϦΛڞ༗͢Δ

Slide 63

Slide 63 text

ϦϙδτϦΛڞ༗͢Δ

Slide 64

Slide 64 text

Git ΛΠϯετʔϧ͍ͨ͠

Slide 65

Slide 65 text

Mac OSX • σϑΥϧτͰೖͬͯΔΜ͡Όͳ͍Ͱ͔͢Ͷɻ • ΋͔ͨ͠͠Β Xcode ΛΠϯετʔϧ͢Δඞཁ͕͋Δ ͔΋ʁ • ΋͠ɺ৽͍͠όʔδϣϯΛೖΕ͍ͨͱ͔Ͱ͋Ε͹ɺ Homebrew Λ࢖͑͹؆୯ʹΠϯετʔϧͰ͖·͢ɻ • GitHub for Mac, SourceTree for Mac

Slide 66

Slide 66 text

Linux • apt-get install git • ׬શʹσΟετϦϏϡʔγϣϯΛݶఆ͍ͯ͠Δ

Slide 67

Slide 67 text

Windows • ެࣜʹ͸αϙʔτ͞Εͯ·ͤΜ • Git for Windows (msysGit) • SourceTree for Windows • GitHub for Windows

Slide 68

Slide 68 text

͓͞Β͍ • git • init, add, commit, checkout, log, show, pull, push, branch, rebase • GitHub • PullRequest ͸࠷ߴʹྑ͍ • ๺ւಓେ޷͖

Slide 69

Slide 69 text

# shutdown -h now ↵ Broadcast message from root (pts/1) (Sat May 31 17:32:16 2014): The system is going down for reboot NOW!

Slide 70

Slide 70 text

No content