Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ソフトウェア工学08 バージョン管理

ソフトウェア工学08 バージョン管理

バージョン管理

バージョン管理の必要性,diff/patch,分散リポジトリ,gitコマンド,gitフロントエンド

99b434b001cd93fe73322f764d73372c?s=128

Toru Tamaki

August 05, 2021
Tweet

Transcript

  1. ιϑτ΢ΣΞ޻ֶ nόʔδϣϯ؅ཧ • όʔδϣϯ؅ཧͷඞཁੑɼdiff/patchɼ෼ࢄϦϙδτϦɼgitί ϚϯυɼgitϑϩϯτΤϯυ ۄ໦పʢ໊޻େʣ

  2. όʔδϣϯ؅ཧ

  3. όʔδϣϯ؅ཧͱ͸ nมߋཤྺΛอଘ͢Δ͜ͱ • ޙ͔Β໭͢͜ͱ΋͋ΔͨΊ • ػೳͷཤྺΛ࢒ͨ͢Ί nόʔδϣϯ؅ཧ͠ͳ͍ͱ • ௚઀ϑΝΠϧΛ্ॻ͖ •

    ݩʹ໭Εͳ͍ • ίʔυ͕ಈ͔ͳ͘ͳΔ • Ҏલͷه࿥͕ͳ͘ͳΔ • ෆ۩߹͕ੜͨ͡৔߹ʹҎલͷ όʔδϣϯʹ໭ͤͳ͘ͳΔ • ฒߦͯ͠ػೳ௥ՃͰ͖ͳ͍ • νʔϜ։ൃͰ͸க໋త ver 1.0 ver 1.1
  4. ୯७ͳํ๏ nϑΝΠϧ໊Ͱ؅ཧ nϑΥϧμʹ෼͚ͯ؅ཧ nଟ਺ͷ໰୊఺ • ϑΥϧμ͕ݹ͍ϑΝΠϧͰԚછ͞ΕΔ • ϑΝΠϧ͕૿͑Δ • ͲΕ͕࠷৽ͳͷ͔ෆ໌

    • ʮ࠷৽όʔδϣϯʯͷཚཱ • มߋཤྺ͕௥͑ͳ͍ • ௥੻Մೳੑͷ௿Լ • ୭͕࡞੒ͨ͠ͷ͔ෆ໌ • νʔϜ։ൃ͕Ͱ͖ͳ͍
  5. ୯७ͳํ๏ nίʔυΛίϝϯτΞ΢τͯ͠؅ཧ nଟ਺ͷ໰୊఺ • ίʔυ͕Ԛછ͞ΕΔ • ࠷৽όʔδϣϯҎ֎ͷෆཁͳίʔυ΋ ࢒Δ • ௨ৗͷίϝϯτͱ۠ผ͕͔ͭͳ͍

    • Մಡੑͷ௿Լ • ͍ͭ୭͕มߋͨ͠ͷ͔ෆ໌ • νʔϜ։ൃ͕Ͱ͖ͳ͍
  6. EJGGQBUDI

  7. EJGGͱQBUDIɿϑΝΠϧؒͷࠩ෼ ndiff • ϑΝΠϧؒͷࠩ෼ΛݟΔίϚϯυ npatch • ϑΝΠϧؒͷࠩ෼Λద༻͢ΔίϚϯυ ίʔυ͸͔͜͜Βμ΢ϯϩʔυ ίʔυ͸͔͜͜Βμ΢ϯϩʔυ

  8. EJGG nϑΝΠϧؒͷߦ୯Ґͷࠩ෼Λநग़

  9. ndocker-compose.yml version: "3" services: myubuntu: build: ./ volumes: - ./:/mnt

    tty: true EPDLFSDPNQPTFΛར༻͢Δ ndockerfile FROM ubuntu:20.04 RUN apt -y update ¥ && apt -y install patch git WORKDIR /mnt ىಈ͢Δɿ $ docker-compose build $ docker-compose up -d
  10. EJGGͷग़ྗ nϑΝΠϧؒͷߦ୯Ґͷࠩ෼Λநग़ ϑΝΠϧAͰ มߋ͞Εͨߦ diffίϚϯυ ʢίϯςφͰʣ ࣮ߦ͢ΔίϚϯυ ݹ͍ϑΝΠϧA ৽͍͠ϑΝΠϧB ϑΝΠϧBͰ

    ରԠ͢Δߦ
  11. EJGGͷग़ྗɿVOJGJFEܗࣜʢݱࡏͷඪ४ʣ nϑΝΠϧؒͷߦ୯Ґͷࠩ෼Λநग़ -u: unifiedܗࣜͰग़ྗ +: ϑΝΠϧBͰ ௥Ճ͞ΕΔߦ -: ϑΝΠϧA͔Β ࡟আ͞ΕΔߦ

    ϑΝΠϧB ϑΝΠϧA ϑΝΠϧBͰରԠ͢ Δ։࢝ߦɼऴྃߦ ϑΝΠϧAͰରԠ͢ Δ։࢝ߦɼऴྃߦ ֤ϑΝΠϧͷλΠϜ ελϯϓ
  12. EJGGͷྫ ϑΝΠϧBͰ௥Ճ ϑΝΠϧA͔Β࡟আ

  13. EJGGϑΝΠϧ nunifiedܗࣜͷdiffͷग़ྗΛϑΝΠ ϧʹͨ͠΋ͷ • ࠷ۙͷΤσΟλͰදࣔ͢Δͱ෼͔Γ ΍͘͢৭͕ͭ͘ nߋ৽ͷ഑෍ํ๏ • diffϑΝΠϧΛ૬खʹૹ෇ •

    ૬ख͸diffϑΝΠϧͰߋ৽ • ͨͩ͠ݹ͍΍Γํ • ݱࡏ͸΄ͱΜͲ࢖ΘΕͳ͍ ndiffܗࣜͰͷදࣔ͸Α͘࢖ΘΕΔ • gitͰ΋GitHubͰ΋ ϑΝΠϧBͰ௥Ճ ϑΝΠϧA͔Β࡟আ ϦμΠϨΫτͰඪ४ग़ྗ ΛϑΝΠϧʹอଘ ֦ுࢠ͸.diff͕Ұൠత
  14. QBUDIɿEJGGϑΝΠϧΛ༻͍ͨߋ৽ nίʔυΛߋ৽͢Δํ๏ • ৽͍͠΋ͷʹશମΛೖΕସ͑Δ • ϑΝΠϧ͕େྔʹͳΔ • ͪ͜Βଆ͕मਖ਼தͷίʔυ ·Ͱ্ॻ͖͞Εͯ͠·͏ •

    มߋ͞Εͨ෦෼ͷࠩ෼͚ͩΛར ༻͢Δ • ૬खଆͰมߋ͞ΕͨϑΝΠ ϧ͚͕ͩߋ৽͞ΕΔ • ͜Ε͕diff/patch npatchίϚϯυ • diffϑΝΠϧΛखݩͷϑΝΠϧ ʹద༻ • ʮύονΛ౰ͯΔʯͱݴ͏ diffϑΝΠϧ ߋ৽લͷϑΝΠϧ
  15. QBUDI npatchɿdiffϑΝΠϧΛखݩͷ ϑΝΠϧʹద༻ • patchʹඪ४ೖྗ͔ΒdiffϑΝΠ ϧΛೖྗ͢Δ • diffϑΝΠϧʹैͬͯίʔυΛߋ ৽͢Δʢ্ॻ͖ʣ n໰୊఺

    • diffʹͳ͍มߋ͕͋Δ৔߹ʢίϯ ϑϦΫτʣ͸खಈͰௐ੔͕ඞཁ • όʔδϣϯ؅ཧࣗମ͸Ͱ͖ͳ͍ ߋ৽ޙͷϑΝΠϧ ϦμΠϨΫτͰඪ४ೖྗ͔ ΒdiffϑΝΠϧΛೖྗ docker-composeͰඪ ४ग़ྗΛड͚෇͚ΔΦ ϓγϣϯ
  16. QBUDI ϦμΠϨΫτͰඪ४ೖྗ͔ ΒdiffϑΝΠϧΛೖྗ docker-composeͰඪ ४ग़ྗΛड͚෇͚ΔΦ ϓγϣϯ nWindowsͷ৔߹ • PowerShell͸ඪ४ೖྗʹʮ<ʯΛ࢖͑ͳ͍ͷͰɼcatͰdiffϑΝΠϧΛදࣔͯ͠ɼ ͦΕΛύΠϓʮ|ʯͰίϯςφʹ౉͠·͢

    • ʢͪͳΈʹ͜Ε͸macͰ΋ಈ࡞͠·͢ʣ ύΠϓͰඪ४ೖྗ͔Βdiff ϑΝΠϧΛೖྗ docker-composeͰඪ ४ग़ྗΛड͚෇͚ΔΦ ϓγϣϯ
  17. όʔδϣϯ؅ཧઐ༻ͷπʔϧ nConcurrent Versions System (csv) https://www.nongnu.org/cvs/ • 90೥୅ʹ࢖ΘΕ͕ͨݱ୅Ͱ͸ഇΕͨ nsubversion (SVN)

    http://subversion.apache.org • தԝ؅ཧܕɽΫϥΠΞϯταʔό • ͋Δਓ͕ฤू͢ΔͱϩοΫ͕͔͔Γɼଞͷਓ͕ฤूͰ͖ͳ͍ ngitɿۙ೥ͷۀքඪ४ https://git-scm.com • ෼ࢄ؅ཧܕ • ෳ਺ͷϦϙδτϦ͕ผʑʹ؅ཧ͞ΕΔ • ϨΫνϟʔͰ͸gitΛ঺հ nMercurial https://www.mercurial-scm.org • ෼ࢄܕ • gitͱฒΜͰΑ͘࢖ΘΕͯΔ
  18. HJUʹΑΔόʔδϣϯ؅ཧ

  19. ෼ࢄϦϙδτϦʹΑΔ؅ཧ nϩʔΧϧϦϙδτϦ • ֤ࣗͰอଘ͢ΔϑΝΠϧҰࣜͱมߋཤྺ nϦϞʔτϦϙδτϦ • ϩʔΧϧϦϙδτϦ͔Βߋ৽͞ΕΔ • Ξοϓϩʔυɿpush •

    μ΢ϯϩʔυɿpull มߋ मਖ਼ มߋ मਖ਼ ϩʔΧϧ ϦϙδτϦ ϩʔΧϧ ϦϙδτϦ ϦϞʔτ ϦϙδτϦ GitHub GitLab bitbucket ϩʔΧϧσΟεΫͰ΋ ϦϞʔτϦϙδτϦ͸Մೳ
  20. ϩʔΧϧϦϙδτϦʹΑΔόʔδϣϯ؅ཧ nϩʔΧϧϦϙδτϦΛར༻ • ཤྺΛอ࣋ • มߋɼमਖ਼ɼ௥Ճɼ࡟আͳͲ ngitίϚϯυ • ϦϙδτϦΛ؅ཧ͢Δ มߋ

    मਖ਼ ϩʔΧϧ ϦϙδτϦ
  21. HJUʹ͓͚ΔมߋͷྲྀΕ git add git commit εςʔδϯά ίϛοτ ࡞ۀπϦʔ ʢϫʔΫπϦʔʣ ΠϯσοΫε

    ʢεςʔδϯάΤϦΞʣ ϩʔΧϧ ϦϙδτϦ มߋ मਖ਼ ίʔσΟϯά΍ σόοάΛߦ͏ ίϛοτ༻ͷ Ұ࣌อ؅৔ॴ ίϛοτ͕ อଘ͞ΕΔ 1ͭͷίϛοτ͕ 1ͭͷʮόʔδϣϯʯ
  22. ίϛοτɿίʔυͷߋ৽ nόʔδϣϯΛάϥϑͰදݱ͢Δ • ίϛοτ͢Δͨͼʹϊʔυ͕Ҡಈ • ओװϒϥϯνͷ໊લ • mainϒϥϯν • ʢmasterϒϥϯνɿޙͰઆ໌͋Γʣ

    • HEAD • ઌ಄ʢ࠷৽όʔδϣϯʣ ॳظίϛοτ ίϛοτ1 ίϛοτ2 HEAD ॳظίϛοτ ίϛοτ1 HEAD ॳظίϛοτ HEAD
  23. ίϛοτͷྫ ίϛοτؒͷdiff sourcetreeʹΑΔදࣔ ʢgitϑϩϯτΤϯυʣ

  24. ίϛοτͷྫ ίϛοτؒͷdiff sourcetreeʹΑΔදࣔ ʢgitϑϩϯτΤϯυʣ

  25. ίϛοτͷྫ ίϛοτؒͷdiff sourcetreeʹΑΔදࣔ ʢgitϑϩϯτΤϯυʣ

  26. HJUίϚϯυ

  27. ઃఆϑΝΠϧɿHJUDPOGJH nඞਢͷઃఆ • ࢯ໊ • ϝʔϧΞυϨε n৔ॴ • linux, macosɿϗʔϜσΟϨΫτϦ௚Լ

    • ~/.gitconfig • windowsɿʮϢʔβʔ໊ʯ͸ࣗ෼ͷϢʔβʔ໊ • C:¥Ϣʔβʔ¥Ϣʔβʔ໊¥.gitconfig n ઃఆͷίϚϯυ
  28. HJUJOJUɿϦϙδτϦͷॳظԽ nθϩ͔ΒϩʔΧϧϦϙδτϦΛ࡞੒͢Δ ʢུʣ ॳظԽͷίϚϯυ ϦϙδτϦͷ໊લ ͜͜ʹ͢΂ͯ ͷ৘ใ͕อଘ ͞ΕΔ ݱࡏͷϑΥϧμͷԼʹϦ ϙδτϦ໊ͷϑΥϧμ͕

    ࡞੒͞ΕΔ ͜ͷޙ͸ϑΝΠϧΛ࡞੒͠ɼgit addɼgit commitΛߦ͑͹Α͍
  29. HJUDIFDLPVU nطଘͷϦϙδτϦ͔Βίϐʔ • ಛʹϦϞʔτϦϙδτϦ͔Β ϦϙδτϦΛίϐʔ͠ ͯ͘ΔίϚϯυ ϦϞʔτϦϙδτϦͷURLͳͲ ͜Ε͕ศརʂ ωοτ࣌୅ʹେ׆༂ʂ https://github.com/missing-semester/missing-semester

  30. ิ଍ɿ͜ͷϨΫνϟʔͷίʔυ nGitHubʹ͋Γ·͢ • clone͍ͯͩ͘͠͞ • GitHubʹ͍ͭͯ͸ผͷճͰઆ໌͠·͢ https://github.com/se-nitech

  31. ิ଍ɿ͜ͷϨΫνϟʔͷίʔυ nGitHubʹ͋Γ·͢ • clone͍ͯͩ͘͠͞ • GitHubʹ͍ͭͯ͸ผͷճͰઆ໌͠·͢ nҎԼͷίϚϯυͰ͢΂ͯऔಘͰ͖·͢ nҎ߱͸ରԠ͢ΔσΟϨΫτϦʹҠಈ࣮ͯ͠ߦ͍ͯͩ͘͠͞ • ࠓճͳΒ

    https://github.com/se-nitech git clone https://github.com/se-nitech/se-all.git cd se-all git submodule update --init --recursive git submodule foreach git checkout main git submodule foreach git fetch --all cd 08_03_git
  32. HJUBEE DPNNJUɿεςʔδϯάͱίϛοτ ͜ͷίϛοτͷ౷ܭ৘ใ εςʔδϯά͢ ΔίϚϯυ εςʔδϯά͢Δ ϑΝΠϧ໊ ίϛοτ͢Δ ίϚϯυ -m:

    ίϛοτʹ෇͚Δίϝϯτ ʢͳͥɾԿΛมߋͨ͠ͷ͔͕ ޙͰ෼͔ΔΑ͏ʹॻ͘͜ͱ͕ ॏཁʂʣ ίϛοτ͢Δ ϑΝΠϧ໊
  33. HJUMPHɿίϛοτཤྺ ͜Ε·Ͱͷίϛοτͷ ϩάΛදࣔ ίϛοτͷί ϝϯτ ίϛοτͷID ʢϋογϡ஋ʣ 1ͭͷίϛοτ

  34. HJUTUBUVTɿ࡞ۀσΟϨΫτϦͷঢ়ଶ ࡞ۀπϦʔͱΠϯσοΫ εͷঢ়ଶΛදࣔ ࡞ۀπϦʔ Ͱมߋ͞Ε ͍ͯΔϑΝ Πϧ ΠϯσοΫ εʹϑΝΠ ϧ͸ͳ͍

    ΠϯσοΫ εʹ͋Δ ϑΝΠϧ εςʔδϯά ͢Δͱ
  35. HJUEJGGɿίϛοτؒࠩ෼ ࠩ෼ΛݟΔίϚϯυ ࠩ෼ΛऔΔ2ͭͷίϛοτID ίϛοτIDΛࢦఆ͠ͳ͍ͱɼ ࡞ۀπϦʔͱΠϯσοΫεͷ ࠩ෼Λදࣔ

  36. HJUSN NWɿϑΝΠϧͷૢ࡞ nϑΝΠϧͷૢ࡞͸gitίϚϯυΛ࢖͏ • ͦΕ·Ͱͷཤྺ͕ࣦΘΕͯ͠·͏ • ௨ৗͷmv, rm͸࢖Θͣgit rm, git

    mvΛ࢖͓͏ ௨ৗͷmvɿgitཤྺ͕ࣦΘΕΔ git mvɿgitཤྺ͕࢒Δʂ ௨ৗͷrmɿgitཤྺ͕ࣦΘΕΔ git rmɿgitཤྺ͕࢒Δʂ
  37. HJUͷ஫ҙ఺

  38. όʔδϣϯ؅ཧ͢Δର৅ nର৅ɿςΩετϑΝΠϧ • ίʔυ • *.py, *.cpp • ઃఆϑΝΠϧ •

    dockerfile, docker-compose.yml • υΩϡϝϯτ • README.md nର৅֎ • όΠφϦϑΝΠϧɼσʔλ • ࣮ߦܗࣜϑΝΠϧ • ը૾ϑΝΠϧ • Ի੠ϑΝΠϧ • etc • ؅ཧ͢Δඞཁͷͳ͍ϑΝΠϧ • .vscodeͳͲΤσΟλઃఆ • தؒϑΝΠϧ • __pycache__ • *.pyc • Ұ࣌ϑΝΠϧ • .coverageͳͲʢ࣍ճʣ
  39. ؅ཧ֎ϑΝΠϧͷઃఆ nϑΝΠϧʮ.gitignoreʯ • ͜Εʹॻ͍ͨϑΝΠϧ͸git؅ཧ͔ Βআ֎͞ΕΔ • ࢦఆ಺༰ • ϑΝΠϧ໊ •

    ϑΥϧμ໊ • ͦͷϑΥϧμҎԼ͢΂ͯແ ࢹ • ϫΠϧυΧʔυ* • *ͷ෦෼ʹϚον͢ΔϑΝΠ ϧ nྫ __pycache__/ .vscode/ *.pyc htmlcov/ .coverage coverage.xml nࢀߟ • [Git] .gitignoreͷ࢓༷ৄղ • gitignoreͷॻ͖ํνʔτγʔτʲς ϯϓϨ͋Γʳ • https://github.com/github/gitignore
  40. ϒϥϯν

  41. ίϛοτɿίʔυͷߋ৽ nόʔδϣϯΛάϥϑͰදݱ͢Δ • ίϛοτ͢Δͨͼʹϊʔυ͕Ҡಈ • ओװϒϥϯνͷ໊લ • mainϒϥϯν • ʢmasterϒϥϯνʣ

    • HEAD • ઌ಄ʢ࠷৽όʔδϣϯʣ ॳظίϛοτ ίϛοτ1 ίϛοτ2 HEAD ॳظίϛοτ ίϛοτ1 HEAD ॳظίϛοτ HEAD ݱࡏ͸”main”͕ओྲྀ “master”͸࢖Θͳ͍Α͏ʹ͠Α͏ɽ มߋ͢Δʹ͸“git branch -M main”
  42. ϒϥϯνɿฒߦ։ൃ nҟͳΔཤྺΛදݱ͍ͨ͠ • ϒϥϯνʢbranchɼࢬʣΛ࡞Δ • ʮϒϥϯνΛ੾Δʯͱ͍͏ n༻్ • ҟͳΔػೳͳͲΛฒߦͰ։ൃ •

    ϝΠϯͷ։ൃ͸ܧଓ͠ͳ͕ΒόάϑΟοΫε • ҆ఆ൛ͷ։ൃΛܧଓ͠ͳ͕Β௥ՃػೳΛ࣮૷ nϒϥϯνͷૢ࡞ • ࡞ۀπϦʔΛ੾Γସ͑Δ • mainͰ࡞ۀ • bugfixͰ࡞ۀ • HEAD • ݱࡏͷϒϥϯνͷઌ಄ bugfix HEAD main
  43. ϒϥϯνͷ࡞੒ͱ੾Γସ͑ HEAD main git branch ϒϥϯνΛදࣔ ʢ*͸ݱࡏͷϒϥϯνʣ ݱࡏ͸”main”͕ओྲྀ “master”͸࢖Θͳ͍Α͏ʹ͠Α͏ɽ มߋ͢Δʹ͸“git

    branch -M main”
  44. ϒϥϯνͷ࡞੒ͱ੾Γସ͑ HEAD main bugfix git branch ϒϥϯν໊ ৽نϒϥϯνΛ࡞੒ ·ͩmainͷ··

  45. ϒϥϯνͷ࡞੒ͱ੾Γସ͑ HEAD main bugfix git checkout ϒϥϯν໊ ϒϥϯνΛ੾Γସ͑ bugfixϒϥϯνʹ ੾ΓସΘͬͨ

  46. ϒϥϯνͷϚʔδ n2ͭͷϒϥϯνΛ౷߹ n༻్ • όάϑΟοΫεΛϝΠϯʹ൓ө • ௥ՃػೳΛ҆ఆ൛ʹ൓ө nϚʔδͷํ๏ • HEADͷ͋ΔϒϥϯνͰ

    • git merge Ϛʔδ͢Δϒϥϯν໊ n΋͠ίϯϑϦΫτ͕ൃੜͨ͠Β • ྫɿmainͱbugfixͰಉ͡෦෼Λมߋ͍ͯͨ͠Β • खಈͰमਖ਼ bugfix HEAD main
  47. ϒϥϯνͷ࢖͍ํ nbugfixϒϥϯν • ϝΠϯͷ։ൃ͸ܧଓ͠ͳ͕ΒόάϑΟο Ϋε • ϝΠϯΛ௚઀मਖ਼ͯ͠͠·͏ͱɼम ਖ਼ʹࣦഊ͍ͯͨ͠ΒࠔΔ • όάϑΟοΫεΛϝΠϯʹ൓ө

    • मਖ਼͕࣮֬ʹػೳ͢Δ͜ͱΛ֬ೝ͠ ͔ͯΒϚʔδ nνʔϜ։ൃମ੍ͷྫ • mainϒϥϯνͷϝϯςφϯενʔϜ • bugfixϒϥϯνͷ։ൃνʔϜ main ver 1.1 ෆ۩߹ ௐࠪ։࢝ main ver 1.0 मਖ਼ʂ bugfix ϒϥϯν
  48. ϒϥϯνͷ࢖͍ํ nfeatureϒϥϯν • ҆ఆ൛ͷ։ൃΛܧଓ͠ͳ͕Β௥ՃػೳΛ ࣮૷ • ௥Ճػೳ͕׬੒ͨ͠Β҆ఆ൛ʹ൓ө nνʔϜ։ൃମ੍ͷྫ • mainϒϥϯνͷϝϯςφϯενʔϜ

    • featureϒϥϯνͷ։ൃνʔϜ main ver 2.0 ৽ػೳ ։ൃ main ver 1.0 ׬੒ʂ feature ϒϥϯν
  49. ࣮ࡍͷϒϥϯνɾϚʔδͷྫ https://github.com/pytorch/pytorch diff ϒϥϯν ͷϚʔδ ৄࡉͳίϛο τίϝϯτ ϦϞʔτϦϙδ τϦͷϒϥϯν Ұߦίϛοτ

    ίϝϯτ
  50. EFUBDIFE)&"% n࡞ۀπϦʔΛ్தͷίϛοτʹ ໭͍ͨ͠ • աڈͷίϛοτ͔ΒϒϥϯνΛ੾ Γ͍ͨ৔߹ͳͲ nํ๏ • ͦͷίϛοτΛcheckout͢Δ •

    git checkout ίϛοτID • ͢Δͱdetached HEADʹͳΔ • աڈʹ͍ΔݱࡏҐஔ • mainϒϥϯνͷ࠷৽ʹ໭Δʹ͸ • git checkout main bugfix HEAD main detached HEAD
  51. ෼ࢄϦϙδτϦʹΑΔ؅ཧ nϩʔΧϧϦϙδτϦ • ֤ࣗͰอଘ͢ΔϑΝΠϧҰࣜͱมߋཤྺ nϦϞʔτϦϙδτϦ • ϩʔΧϧϦϙδτϦ͔Βߋ৽͞ΕΔ • Ξοϓϩʔυɿpush •

    μ΢ϯϩʔυɿpull มߋ मਖ਼ มߋ मਖ਼ ϩʔΧϧ ϦϙδτϦ ϩʔΧϧ ϦϙδτϦ ϦϞʔτ ϦϙδτϦ GitHub GitLab bitbucket
  52. ෼ࢄϦϙδτϦʹΑΔ։ൃͱ഑෍ มߋ मਖ਼ มߋ मਖ਼ ϩʔΧϧ ϦϙδτϦ ϩʔΧϧ ϦϙδτϦ ϦϞʔτ

    ϦϙδτϦ push pull ʢfetch + mergeʣ push pull ʢfetch + mergeʣ ։ൃऀA ։ൃऀB checkout ੈքதͷ Ϣʔβʔ ։ൃऀBͷมߋΛ Ϛʔδ ։ൃऀAͷมߋΛ Ϛʔδ
  53. (JUΛ࢖͓͏

  54. HJUGPSNBD04 n͓͢͢Ί • XcodeΛΠϯετʔϧ n্ڃऀ • HomebrewͰ΋OK https://git-scm.com/download/mac

  55. (JUGPSXJOEPXT ngit for windowsΛΠϯετʔϧ https://gitforwindows.org

  56. 4PVSDFUSFF ngitͷϑϩϯτΤϯυ ʢGUIʣ nmac, win, linux https://www.sourcetreeapp.com

  57. 74DPEF ngitͷϑϩϯτ Τϯυ͋Γ n֦ுػೳͰά ϥϑදࣔ͋Γ git Git GraphͰ άϥϑදࣔ https://github.com/pytorch/pytorch

  58. 74DPEF ngitͷϑϩϯτ Τϯυ͋Γ n֦ுػೳͰά ϥϑදࣔ͋Γ git https://github.com/pytorch/pytorch

  59. 74DPEF ngitͷϑϩϯτ Τϯυ͋Γ n֦ுػೳͰά ϥϑදࣔ͋Γ Git Graph ΛΠϯετʔϧ Git Graph

    Ͱݕࡧͯ͠
  60. ίϯςφͰHJUΛ࢖͏஫ҙ఺

  61. HJUDPOGJHͷѻ͍ nϗετͷ৔߹ • linux, macosɿϗʔϜσΟϨΫτϦ௚Լ • ~/.gitconfig • windowsɿʮϢʔβʔ໊ʯ͸ࣗ෼ͷϢʔβʔ໊ •

    C:¥Ϣʔβʔ¥Ϣʔβʔ໊¥.gitconfig nίϯςφͷ৔߹ • ίϯςφ಺ʹHJUDPOGJH͕ඞཁ • Ϣʔβʔ͕SPPUͳͷͰSPPUHJUDPOGJH͕ඞཁ • ํ๏͸ͭ • ίϯςφ಺Ͱ࡞੒ɿຖճ࡞੒͢ΔͷͰ໘౗ • ϗετͷHJUDPOGJHΛίϐʔɿͪΐͬͱखؒɼͰ΋ • ϗετͱίϯςφͰಉ͡΋ͷ͕࢖͑ΔͷͰศར
  62. HJUDPOGJHΛϗετ͔Βίϯςφ΁ίϐʔɿ̍ ndocker cpίϚϯυ • docker cp ϗετϑΝΠϧ໊ ίϯςφ໊:ίϐʔઌ • mac/linux

    • docker cp ~/.gitconfig 08_03_git_myubuntu_1:/root/ • win • docker cp ~/.gitconfig 08_03_git_myubuntu_1:/root/ ίϐʔ͠ͳ͍ͱrootϢʔβʔ ͷ.gitignore͸ͳ͍
  63. HJUDPOGJHΛϗετ͔Βίϯςφ΁ίϐʔɿ̍ ndocker cpίϚϯυ • docker cp ϗετϑΝΠϧ໊ ίϯςφ໊:ίϐʔઌ • mac/linux

    • docker cp ~/.gitconfig 08_03_git_myubuntu_1:/root/ • win • docker cp ~/.gitconfig 08_03_git_myubuntu_1:/root/ ίϐʔͨ͠ΒrootϢʔβʔ ͷ.gitignore͕࢖ΘΕΔ
  64. HJUDPOGJHΛϗετ͔Βίϯςφ΁ίϐʔɿ̍ ndocker cpίϚϯυ • docker cp ϗετϑΝΠϧ໊ ίϯςφ໊:ίϐʔઌ • win

    • docker cp c:¥Users¥Ϣʔβʔ໊¥.gitconfig 08_03_git_myubuntu_1:/root/ ίϐʔͨ͠ΒrootϢʔβʔ ͷ.gitignore͕࢖ΘΕΔ
  65. HJUDPOGJHΛϗετ͔Βίϯςφ΁ίϐʔɿ̎ nvscodeͰίϯςφΛ։͘ʢwin/mac྆ํʣ • ࣗಈͰϗετͷ.gitconfig͕ίϯςφʹίϐʔ͞ΕΔ ίϯςφ઀ଓ࣌ʹ.gitignore ͕ίϐʔ͞Ε͍ͯΔͷ͕෼ ͔Δ show lowΛԡ͢ͱίϯςφ ઀ଓͷϩά͕දࣔ͞ΕΔ

  66. None
  67. ՝୊ ndiffͱpatchΛ࢖͏ • ͳʹ͔ͷϑΝΠϧAΛ༻ҙͯ͠ɼͦΕΛίϐʔͯ͠ॻ͖׵͑ͯϑΝΠϧBΛ࡞ Δ • AͱBͷdiffϑΝΠϧΛ࡞ΓɼͦΕΛAʹpatchͰద༻ͯ͠ϑΝΠϧCΛ࡞Δ • BͱC͕Ұக͍ͯ͠Δ͜ͱΛ֬ೝ͢Δ ngitΛ࢖͏

    • ϦϙδτϦΛॳظԽ͢Δ • ͳʹ͔ϑΝΠϧΛ࡞੒͠ɼaddͱcommitΛߦ͏ • ҎԼΛ਺ճ൓෮͢Δ • ͦͷϑΝΠϧΛमਖ਼͠ɼaddͱίϛοτΛߦ͏ • ίϛοτϩάΛݟΔ • ৽͍͠ϒϥϯνΛ࡞੒͠ɼͦ͜ʹίϛοτ͢Δ
  68. ૝ఆࢼݧ໰୊ nόʔδϣϯ؅ཧͱ͸Կ͔ɼͦͷॏཁੑΛઆ໌ͤΑ ndiffͱpatch͸ԿΛ͢ΔίϚϯυ͔Λ۩ମྫͰઆ໌ͤΑ ngitͷίϚϯυͷҙຯͱ࢖͍ํΛઆ໌ͤΑ • init, checkout, add, commit, log,

    status nϑΝΠϧ.gitignoreͷ໾ׂΛઆ໌ͤΑ ngitʹ͓͚Δϒϥϯνͷ໾ׂͱɼ࡞੒ͷ࢓ํΛઆ໌ͤΑ