Git & GitHub社内勉強会

Git & GitHub社内勉強会

社内での勉強会で使った資料です。Git使った事無い人向け。あと、実際にターミナルで実演したんで、そことか分かりにくいだろうけども…。

7abf6b0f75a5facea016cc58485a4a45?s=128

HIRAKI Satoru

May 09, 2012
Tweet

Transcript

  1. Git & GitHub ษڧձ ~ GitͱGitHubͰ৭ʑḿΔͧ~

  2. Gitͱ͔ • ஌Βͳ͍ • ڵຯແ͍ • ஌ͬͯΔ • ࢖ͬͨࣄ͋Δ •

    ΍ͬͺMercurial or BazzarͩΑͶʂ
  3. GitHubͱ͔ • ஌Βͳ͍ • ڵຯແ͍ • ஌ͬͯΔ • ࢖ͬͨࣄ͋Δ •

    ΍ͬͺBitbucketͩΑͶʂ
  4. ·ͣ͸Gitͷྑ͍ॴ • ಠΓͰ΋େৎ෉ʂ • Ωϝࡉ΍͔ͳίϛοτ→Ҏલͷঢ়ଶʹ΋ࡉ͔͘໭ΕΔʂ • औΓ͋͑ͣίϛοτͯ͠΋ɺཤྺͷमਖ਼͕؆୯ʹͰ͖Δ • Branchͷ੾Γ΍͢͞ɾ੾Γସ͑΍͢͞ •

    ୭͕ͲΜͳ΋ͷΛίϛοτ͔͕ͨ͠௥੻͠΍͍͢→੹೚ॏཁʂ
  5. ࣍͸GitHubͷྑ͍ॴ • OSSͷొ࿥਺͕ͬ͛͑͢ଟ͍Αʂ • ༗໊ॴͷOSSͷίϯτϦϏϡʔλʔ΍ίϛολʔ΋ເ͡Όͳ͍ • issue & wikiͰϓϩδΣΫτ؅ཧ΋όονϦ •

    Gistͱ͔ͷपลπʔϧ͕ॆ࣮ͯ͠ΔΑ • ωοτ͑͋͞Ε͹ͲͷPCͰ΋։ൃଓߦͰ͖ΔΑ
  6. Gitͷ֤OSͰͷΠϯετʔϧ • Windows • MsysGit • Mac • Gitެࣜ •

    Homebrew / MacPorts
  7. GitΛ࢖͍͸͡ΊΔલʹ… • ݁ߏλʔϛφϧΤϛϡϨʔλʔ(௨ শɿࠇ͍ը໘)͕ඞཁʹͳΓ·͢ɻ • ͜ΕΛػʹσβΠφʔ or ϑϩϯτΤ ϯυͷਓ΋ͪΐͬͱͨ͠࢖͍ํΛ֮͑ ·͠ΐ͏

    • ͪͳΈʹMacͩͱྑ͍GUIϑϩϯτΤ ϯυ͕͋ΔΜͰ͚͢Ͳ΋Ͷ(GitHub for Macͱ͔SourceTreeͱ͔Towerͱ͔)
  8. ͱ͍͏ࣄͰcommand֮͑Α͏ͥ • ͱ͸ݴ͑ɺࠓճ͸ͦΜͳʹ࢖͍·ͤΜ • cd / mkdir / pwd /

    ls / touch / (ssh- keygen) / ΋ͪΖΜgit • Ҏ্͘Β͍͔͠࢖Θͳ͍Ͱ͢ • ҙຯͱ͔ಇ͖ͳΜ͔͸…→→→→→ • ͦΕ͔ɺ-h or --help or man command
  9. ॳΊͯͷGit ͔ͬ͜Β͸ɺϥΠϒίʔσΟϯάͬͭʔ͔ɺϥΠϒλʔϛφϧ

  10. gitίϚϯυ͕ϫΧϯω • git init • gitͷॳظԽɻ͜ΕͰɺ֘౰σΟϨ ΫτϦΛgitͰ؅ཧ • git add

    • gitͰcommit͢ΔϑΝΠϧΛࢦఆ • git status • gitͷঢ়ଶΛݟΔ • git commit • gitʹcommitͯ͠มߋΛ؅ཧ͢Δ • Ͷɺ؆୯Ͱ͠ΐʁ
  11. ͋Εʁίϛοτͪ͠Ό͏ͷʁ • ࠜຊతʹSVNͱ͸ҧ͍·͢ • GitͰ͸commit = αʔόʔʹΞοϓͰ͸ແ͍Ͱ͢ • ͸ͯɺ͡Ό͋GitͷcommitͬͯԿ͢ΔΜʁ

  12. ͜͜Ͱͪΐͬͱ೉͍͠આ໌ • git add͸มߋ఺(not ϑΝΠϧ)Λindex(εςʔδϯά)ʹొ࿥͢Δ ίϚϯυͰ͢ • git commit͸addͰొ࿥͞Εͨมߋ఺Λ࣮ࡍʹϑΝΠϧมߋͨ͠ ཤྺͱͯ͠ొ࿥͢ΔίϚϯυͰ͢

  13. ॳΊͯͷมߋ λΠτϧ͕͖ͬ͞ݟͨͷͱࣅͯΔͷ͸ܾͯ͠खΛൈ͍͔ͨΒ͡Όͳ͍Αɻ

  14. ͋ͨΒ͍͠gitίϚϯυ • git diff • git add ͢Δલͷ(εςʔδϯάલͷ) ࠓճͷϑΝΠϧͷมߋ఺Λදࣔ •

    git diff HEAD • git add ͢Δલͷ(εςʔδϯάલͷ) શͯͷϑΝΠϧͷมߋ఺Λදࣔ • ͑ͬͱͲ͏͍͏ࣄʁ • HEADͱ͍͏ͷ͸gitͰͷ࠷৽ίϛο τΛࢦ͢༻ޠʹͳΓ·͢ • add͸มߋঢ়ଶͷొ࿥ͳͷͰɺී௨ ͷdiff͸ͦͷ࣌ͷมߋ఺ͷΈදࣔ͠ ͯɺHEADʹ޲͚ΔͱࠓἬͷcommit લͷมߋ఺Λදࣔ͢Δͱ͍͏ҧ͍ ͕͋Γ·͢ • ͪͳΈʹHEAD͸ଞͰ΋࢖༻
  15. ΋͏গ͠೉͍͠આ໌ • มߋ఺ͱ͔ݴͬͯ·͕͢git͸ҎԼͷ3ͭͷঢ়ଶΛૢ࡞ͯ͠มߋΛ ه࿥͠·͢ • Working directory • Staging area

    • Repository
  16. Working directory • ී௨ʹExploreͱ͔FinderͰݟΒΕΔϑΝΠϧɾσΟϨΫτϦ • ීஈ࡞ۀ͢Δͷʹ͸ͪ͜ΒΛΠδΓ·͢Ͷ(౰ͨΓલ) • ͱ͸ݴ͑ɺ͜Ε͸git͔ΒݟΔͱ͋Δcommit࣌఺ͰͷνΣοΫΞ ΢τͰ͢

  17. Staging area • ͖͔ͬ͞Βgit addͰεςʔδϯάͱ͔ݴͬͯͨͷ͸ίϨ • ͜Ε͸Working directoryͰͷมߋ఺ͳΜ͔Λ஝͑Δॴ • git

    commit͢Δ࣌ʹ͔͜͜Βมߋ఺͕gitʹ఻ΘΔ • ී௨͸࣮ମ͕ແ͍(Α͏ʹݟ͑Δ)
  18. Repository • ͿͬͪΌ͚ɺgitͷ৺ଁ෦ɻ͜Εແ͍ͱgit͕ࢮΜ͡Ό͏ʂ • ࠓἬͷมߋ఺ͷཤྺͱ͔ͦͷଞॾʑೖͬͯΔDBΈ͍ͨͳ΋ͷ • GitHubͷRepository΋͜Εͱશ͘มΘΓ·ͤΜ • ͳͷͰɺGitHub͔Βclone͖ͯͨ͠΋ͷ͕શͯ࢖͑ΔΜͰ͢Ͷ

  19. ϒϥϯνͱ͔Ͷʔͷʁ • ͋Δʹܾ·ͬͯΜͩΖɺϰΥέ • gitͷϒϥϯνͱ͔λά͸svnͷ200ഒ࢖͍΍͍͢Ͱ͢(౰ࣾൺ) • ෳ਺ਓͰ࢖͏৔߹͸ɺΨΠυϥΠϯ͕ཉ͍͠Ͱ͢

  20. ॳΊͯͷϒϥϯν ࣈ໘͸Ұॹ͚ͩͲɺேன݉༻ͷ৯ࣄͷࣄ͡Όͳ͍Α

  21. ͞Βʹ͋ͨΒ͍͠gitίϚϯυ • git branch • ݟͯͷ௨ΓϒϥϯνΛ࡞ΔίϚϯ υ • git checkout

    • svnͩͱϦϞʔτ͔Βιʔε࣋ͬͯ ͘ΔίϚϯυ͚ͩͲɺgitͰ͸Ϧϙ δτϦ͔ΒͳΜͰϩʔΧϧ΋OK • ଞʹ΋git tagͱ͔͋Γ·͢ • tag͸v1.0ͱ͔ίϛοτཤྺͷதͷ ϒοΫϚʔΫΈ͍ͨͳػೳ
  22. ͋Εɺ͜ΕͰઆ໌ऴΘΓͩΘ • gitͷجຊతͳ࢖͍ํ͸࣮͸Ҏ্ͷ܁Γฦͩͬͨ͠Γ͠·͢ • ͳͷͰɺ͜͜Ͱgitͷ࢖͍ํͷઆ໌͸ऴΘΓ • ΋ͪΖΜɺgitͷ࢖͍ํͱ͔ίϚϯυ͸΋ͬͱ৭ʑͱ͋Γ·͢ • ࠓ೔આ໌͠ͳ͍΋ͷ͸ɺάάͬͯͩ͋͘͠ •

    ࣮͸Pro GitͬͯຊͷWeb൛͕͋ΔΜͰɺͦΕͰશ෦ղܾ…
  23. ͔͜͜ΒϋΠύʔGitHubλΠϜ • ͳͷͰ͕͢ɺ·͋ΞΧ΢ϯτ࡞ͬͨΓඞཁͰ͢ • جຊແྉͰ͢ • Ψνϟͱ͔ίϯϓΨνϟͱ͔͸ແ͍Ͱ͢

  24. ͦ΋ͦ΋GitHub͸ԿͰ͖Δͷʁ • GitHubࣗମ͸Gitઐ༻ͷϗεςΟϯάαʔϏε • ͳͷͰɺࣗ෼Ͱ࡞੡ͨ͠ίʔυͷ؅ཧͱ͔ • ଞਓͷϓϩδΣΫτΛforkͯ͠վ଄ͨ͠Γͱ͔ • forkͨ͠΋ͷΛݩͷϓϩδΣΫτʹpull requestͨ͠Γͱ͔

    • ͦΜͳࣄͯͨ͠ΒɺϓϩδΣΫτͷίϛολʔʹͳΕΔ͔΋
  25. ͯ͞ɺ࢖ͬͯΈ·ͬ͠ΐ͍ ΍ͬͺΓɺϥΠϒλʔϛφϧ

  26. ·ʔͨɺ৽͍͠ίϚϯυ͕ • git remote • ϨϙδτϦΛஔ͘৔ॴΛࢦఆ͢Δ (ෳ਺Մ) • git push

    • ϩʔΧϧͷϦϙδτϦͷcommitΛ ϦϞʔτͷϦϙδτϦʹΞοϓ͠ ͯಉظΛऔΔ • git pull • git pushͷٯͰɺϦϞʔτͷϦϙ δτϦͷcommitΛϩʔΧϧͷϦ ϙδτϦʹಉظͤ͞Δ • ϩʔΧϧͱϦϞʔτͷ΍ΓऔΓ͸ جຊɺpush & pullͰେৎ෉
  27. ࣭໰͋Γ·͔͢ʁ

  28. ࠷ޙʹ • ͜ͷઆ໌͸͕ͬͭΓͱ؆୯ʹͨ͠෺ͳΜͰɺڵຯ͋Δਓ͸ࣗ෼ ͰwebͰௐ΂ͨΓɺຊಡΜͩΓͯͩ͋͘͠͠ • ؒҧͬͨઆ໌ͯͨ͠Βਖ਼௚εϚϯ • GitHubͷϚείοτͷOctocat͕ՄѪ͍ͷͰੜ͖Δͷ͕πϥ͍ • http://octodex.github.com/

  29. ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠