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

「Gitによるバージョン管理」の執筆者によるGit勉強会か講演会

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

 「Gitによるバージョン管理」の執筆者によるGit勉強会か講演会

「Gitによるバージョン管理」の執筆者によるGit勉強会か講演会 のメインスライドです。typo などの修正とQAを追記しています。

Avatar for Nobuhiro Iwamatsu

Nobuhiro Iwamatsu

February 29, 2012
Tweet

More Decks by Nobuhiro Iwamatsu

Other Decks in Programming

Transcript

  1. . . . . . . . . . .

    . . . ʮGitʹΑΔόʔδϣϯ؅ཧʯͷ ࣥචऀʹΑΔGitษڧձ͔ߨԋձ ؠদ ৴༸ খ઒ ৳Ұ࿠ લాߞฏ ্઒७Ұ 2012 ೥ 2 ݄ 28 ೔
  2. . . . . . . Gitຊ ʮGit ʹΑΔόʔδϣϯ؅ཧʯ Git

    ʹؔ͢Δຊ͸࢛࡭໨ɻ ଞͷຊͱࠩผ͢Δͷ͕೉͍͠ɻ
  3. . . . . . . Gitຊ ʮGit ʹΑΔόʔδϣϯ؅ཧʯ Git

    ʹؔ͢Δຊ͸࢛࡭໨ɻ ଞͷຊͱࠩผ͢Δͷ͕೉͍͠ɻ Git Λ஌Βͳ͍ਓʹʮ͜Εɺ໌೔·ͰʹಡΜ Ͳ͍ͯʯͱ౉ͨ͠Β͋Δఔ౓ཧղͰ͖Δຊʹ ͠·ͨ͠ɻ
  4. . . . . . . Gitຊ ʮGit ʹΑΔόʔδϣϯ؅ཧʯ Git

    ʹؔ͢Δຊ͸࢛࡭໨ɻ ଞͷຊͱࠩผ͢Δͷ͕೉͍͠ɻ Git Λ஌Βͳ͍ਓʹʮ͜Εɺ໌೔·ͰʹಡΜ Ͳ͍ͯʯͱ౉ͨ͠Β͋Δఔ౓ཧղͰ͖Δຊʹ ͠·ͨ͠ɻ ͓͔͛͞·Ͱਓؾ͋ΔΑ͏Ͱ͢ɻ
  5. . . . . . . Gitຊ ʮGit ʹΑΔόʔδϣϯ؅ཧʯ Git

    ʹؔ͢Δຊ͸࢛࡭໨ɻ ଞͷຊͱࠩผ͢Δͷ͕೉͍͠ɻ Git Λ஌Βͳ͍ਓʹʮ͜Εɺ໌೔·ͰʹಡΜ Ͳ͍ͯʯͱ౉ͨ͠Β͋Δఔ౓ཧղͰ͖Δຊʹ ͠·ͨ͠ɻ ͓͔͛͞·Ͱਓؾ͋ΔΑ͏Ͱ͢ɻ ͋Γ͕ͱ͏͍͟͝·͢ɻ
  6. . . . . . . ॾ஫ҙ ࢒೦ͳ͕Βࠓ೔ͷ࿩Λฉ͍ͯ΋ Git ͸ཧղͰ

    ͖·ͤΜɻ ʮGit ʹΑΔόʔδϣϯ؅ཧʯΛಡΊ͹ཧղ Ͱ͖Δʂ
  7. . . . . . . ॾ஫ҙ ࢒೦ͳ͕Βࠓ೔ͷ࿩Λฉ͍ͯ΋ Git ͸ཧղͰ

    ͖·ͤΜɻ ʮGit ʹΑΔόʔδϣϯ؅ཧʯΛಡΊ͹ཧղ Ͱ͖Δʂ ษڧձΛظ଴͍ͯ͠Δਓ͸ޙͰผ్૬ஊͯ͠ ͍ͩ͘͞ɻ
  8. . . . . . . ॾ஫ҙ ࢒೦ͳ͕Βࠓ೔ͷ࿩Λฉ͍ͯ΋ Git ͸ཧղͰ

    ͖·ͤΜɻ ʮGit ʹΑΔόʔδϣϯ؅ཧʯΛಡΊ͹ཧղ Ͱ͖Δʂ ษڧձΛظ଴͍ͯ͠Δਓ͸ޙͰผ్૬ஊͯ͠ ͍ͩ͘͞ɻ ͜Ε͚ͩࢀՃऀ͕͍ΔͷͰ͍ΖΜͳҙݟΛฉ ͖͍ͨͰ͢ʂ
  9. . . . . . . ॾ஫ҙ ࢒೦ͳ͕Βࠓ೔ͷ࿩Λฉ͍ͯ΋ Git ͸ཧղͰ

    ͖·ͤΜɻ ʮGit ʹΑΔόʔδϣϯ؅ཧʯΛಡΊ͹ཧղ Ͱ͖Δʂ ษڧձΛظ଴͍ͯ͠Δਓ͸ޙͰผ్૬ஊͯ͠ ͍ͩ͘͞ɻ ͜Ε͚ͩࢀՃऀ͕͍ΔͷͰ͍ΖΜͳҙݟΛฉ ͖͍ͨͰ͢ʂ ࢀՃऀͰ৘ใڞ༗͍ͨ͠ͷͰɺਐߦΛ๦͛ͳ ͍ఔ౓ͰόϯόϯҙݟΛ͓ئ͍͠·͢ɻ
  10. . . . . . . ຊ೔ͷΞδΣϯμ . . .

    1 ஶऀ঺հ . . . 2 Git ࠷৽ͬΆ͍৘ใ . . . 3 Subversion ͔Β Git ΁Ҡߦ͢Δͱ͖ͷ໰୊ʹ ͍ͭͯ؆୯ʹޠΔʢখ઒͞Μʣ . . . 4 ফ͞ΕͨηΫγϣϯ: git bundle ʹ͍ͭͯޠͬ ͯΈΔʢؠদʣ . . . 5 ຊͷ಺༰ʹ͍࣭ͭͯٙԠ౴
  11. . . . . . . ஶऀ঺հ ؠদ ৴༸ খ઒

    ৳Ұ࿠ લా ߞฏʢ౎߹ʹΑΓܽ੮ʣ
  12. . . . . . . ஶऀ঺հ ؠদ ৴༸ খ઒

    ৳Ұ࿠ લా ߞฏʢ౎߹ʹΑΓܽ੮ʣ ্઒ ७Ұʢ౎߹ʹΑΓܽ੮ʣ
  13. . . . . . . ࣗݾ঺հ ؠদ ৴༸ʢ͍Θ·ͭ ͷͿͻΖʣ

    Twitter: @iwamatsu Debian Project Official Developer OpenCV, Bluetooth, Mozc, ͳͲͷϝϯςφ ϯε ීஈ͸ձࣾһ Linux kernel, glibc, ϒʔτϩʔμͷ։ൃͳͲ
  14. . . . . . . Git ࠷৽ͬΆ͍৘ใ ࠷৽͸ v1.7.9.2ʢ2012/2/22

    ϦϦʔεʣ v1.7.10 coming soon? git clone --single-branch git push --prune ࣍ظ mysysgit Ͱ UTF8 ରԠΒ͍͠
  15. . . . . . . Git ࠷৽ͬΆ͍৘ใ git am

    --keep-cr am ͢Δͱ͖ʹ CR Λҡ࣋ɻ
  16. . . . . . . Git ࠷৽ͬΆ͍৘ใ git am

    --keep-cr am ͢Δͱ͖ʹ CR Λҡ࣋ɻ git commit -S ίϛοτʹ PGP/GPG ॺ໊͕Ͱ͖ΔΑ͏ʹ ͳͬͨɻ
  17. . . . . . . Git ࠷৽ͬΆ͍৘ใ git am

    --keep-cr am ͢Δͱ͖ʹ CR Λҡ࣋ɻ git commit -S ίϛοτʹ PGP/GPG ॺ໊͕Ͱ͖ΔΑ͏ʹ ͳͬͨɻ git cherry-pick start..end git cherry-pick Ͱ ൣғࢦఆՄೳʹɻ
  18. . . . . . . Git ࠷৽ͬΆ͍৘ใ git am

    --keep-cr am ͢Δͱ͖ʹ CR Λҡ࣋ɻ git commit -S ίϛοτʹ PGP/GPG ॺ໊͕Ͱ͖ΔΑ͏ʹ ͳͬͨɻ git cherry-pick start..end git cherry-pick Ͱ ൣғࢦఆՄೳʹɻ git branch --edit-descriptin ϒϥϯνʹઆ໌Λ௥ՃͰ͖ΔΑ͏ʹͳͬ ͨɻ.git/config ʹઃఆ͞ΕΔɻ
  19. . . . . . . Git ࠷৽ͬΆ͍৘ใ git cherry-pick,

    git revert Ͱ --strategy ͕࢖͑ΔΑ͏ʹͳͬͨɻ
  20. . . . . . . Git ࠷৽ͬΆ͍৘ใ git cherry-pick,

    git revert Ͱ --strategy ͕࢖͑ΔΑ͏ʹͳͬͨɻ git clean -e ࢦఆͨ͠ϑΝΠϧΛແࢹͯ͠ clean ͢Δɻ .git/info/exclude ϑΝΠϧ΋ࢀরɻ
  21. . . . . . . Git ࠷৽ͬΆ͍৘ใ git cherry-pick,

    git revert Ͱ --strategy ͕࢖͑ΔΑ͏ʹͳͬͨɻ git clean -e ࢦఆͨ͠ϑΝΠϧΛແࢹͯ͠ clean ͢Δɻ .git/info/exclude ϑΝΠϧ΋ࢀরɻ git blame --show-email ͦͷ··ɻ
  22. . . . . . . Git ࠷৽ͬΆ͍৘ใ git checkout

    --detach ࢦఆͨ͠ refs ΛνΣ οΫΞ΢τͰ͖Δɻແ໊ ϒϥϯνਥޚ༻ୡɻ $ git checkout master Already on ’master’ $ git checkout ‘git rev-parse master‘ $ git checkout master $ git checkout --detach
  23. . . . . . . Git ࠷৽ͬΆ͍৘ใ git init

    --separate gitdir .git Λ෼཭͢Δɻ $ cd /tmp ; mkdir a; cd a $ git init --separate ../b Initialized empty Git repository in /tmp/b/ $ cat .git gitdir: /tmp/b
  24. . . . . . . Git ࠷৽ͬΆ͍৘ใ git stash

    save -u --include--untracked untracked ϑΝΠϧ΋ stash ͢Δɻ $ touch test $ ls moge test $ git stash save stash-test No local changes to save $ git stash save -u stash-test Saved working directory and index state On master: stash- HEAD is now at 5a4a0a0 commit $ ls moge
  25. . . . . . . Git ࠷৽ͬΆ͍৘ใ git rease

    -i exec αϙʔτ $ git rebase -i test pick c043a7d Add X pick ae24543 Add Y exec cat data0 pick 8d81049 Add Z pick 1e27bd2 Add C ...... Executing: cat data0 X Y Successfully rebased and updated refs/heads/master.
  26. . . . . . . Git ࠷৽ͬΆ͍৘ใ ॲཧ WC

    index HEAD hard R R R mixed - R R soft - - R merge R0 R R keep R1 R R R: Reset R0: WC ͱ index ͷͲͪΒ͔͕ HEAD ͱҟͳΔ৔ ߹ʹ͸ΤϥʔʹͳΔɻadd ͞Εͨ΋ͷ͸ WC ʹ ࢒Δɻ R1: WC ͷΈͷมߋ͸ΤϥʔʹͳΔɻWC ͱ index ͷมߋ͸Ϧηοτ͞ΕΔɻ add ͞Εͨ΋ͷ͸ফ͞ΕΔɻ
  27. . . . . . . Git ࠷৽ͬΆ͍৘ใ gnu patch

    ͕ git ܗࣜΛαϙʔτ (Not yet released)ɻ
  28. . . . . . . tig Vim ʹ͍ۙૢ࡞ײͰ࢖͑Δɻ ϏϡʔΞͱͯ͠͸࢖͍΍͍͢ɻ

    Git ΠϯλʔϑΣΠεͱͯ͠͸ඍົʢදࣔʹ ϦϑϨογϡૢ࡞͕ඞཁͩͬͨΓʣ ɻ
  29. . . . . . . TortoiseGit, GitX, Gity, Gitbox

    TortoiseGit: Windows ༻ GUI GitX: OS X ༻ GUI Gity: OS X ༻ GUI Gitbox: OS X ༻ GUI ࢖ͬͯແ͍ͷͰΑ͘Θ͔Βͳ͍Ͱ͢ɻ
  30. . . . . . . stgit/guilt ύονηοτΛ؅ཧ͍ͨ͠ਓ޲͚ɻ ίϛοτͨ͠ॱ൪ʢཤྺʣ͸ॏཁͰ͸ͳ͘ɺ ݁Ռʹ໰୊͕ͳ͍ͳΒ

    OK ͱ͍͏ߟ͑ɻ ϩʔΧϧϦϙδτϦͰύονΛೖΕସ͑·͘ Γ͍ͨͱ͔ɻ A ← B ← C ΋ B ← C ← A ΋݁Ռతʹಉ͡ ΋ͷ͕Ͱ͖Ε͹ OKɻ
  31. . . . . . . stgit/guilt ύονηοτΛ؅ཧ͍ͨ͠ਓ޲͚ɻ ίϛοτͨ͠ॱ൪ʢཤྺʣ͸ॏཁͰ͸ͳ͘ɺ ݁Ռʹ໰୊͕ͳ͍ͳΒ

    OK ͱ͍͏ߟ͑ɻ ϩʔΧϧϦϙδτϦͰύονΛೖΕସ͑·͘ Γ͍ͨͱ͔ɻ A ← B ← C ΋ B ← C ← A ΋݁Ռతʹಉ͡ ΋ͷ͕Ͱ͖Ε͹ OKɻ quilt ͷ series ͕ϒϥϯνʹͳ͍ͬͯΔɻ ݩ quilt Ϣʔβ͕࢖͍ͬͯΔ৔߹͕ଟ͍ɻ
  32. . . . . . . ࠓޙͷ࿩ Git ษڧձʁ Git

    ϋϯζΦϯʁ Git ίʔυϦʔςΟϯάʁ
  33. . . . . . . git cherry-pick ͬͯͲͷΑ͏ͳ࣌ʹ࢖͏ ͷͰ͔͢?

    طʹ͋ΔίϛοτΛνΣ οΫΞ΢τ͍ͯ͠Δϒϥ ϯνʹద༻͍ͨ͠৔߹ʹ࢖͍·͢ɻྫ͑͹ master ϒϥϯνͰ͋ΔόάΛमਖ਼ͨ͠ɻͦΕ͕ίϛοτ A ͩͱ͠·͢ɻͦͷόά͸ϦϦʔε༻ϒϥϯνʹ ΋͋Δ͜ͱ͕Θ͔͍ͬͯͯ௚͍ͨ͠ɻίϛοτ A ΛϦϦʔε༻ϒϥϯνʹద༻͢Δ͜ͱΑʹͬͯम ਖ਼͞ΕΔͳΒɺϦϦʔε༻ϒϥϯνͰ git cherry-pick A ͱ࣮ߦ͢Δɻ
  34. . . . . . . git clone --separate ͨ࣌͠ͷར఺

    ͸ʁ ؒҧͬͯσΟϨΫτϦ͝ͱফͯ͠͠·ͬͨ࣌ʹɺ ࠷ѱϦϙδτϦ͸࢒͍ͬͯΔͷͰ෮چ͕Ͱ͖ΔՄ ೳੑ͕͋Δɺͱ͔ɻ·ͨ͸ෳ਺ͷνΣ οΫΞ΢τ ͨ͠ϫʔΩϯάίϐʔΛ࣋ͯΔͱ͔ɻgit archive Ͱ΋ಉ͡Α͏ͳ͜ͱ͕Ͱ͖·͚͢ͲɺϦϙδτϦ ͱͷؔ܎͕σʔλతʹ੾ΕΔͷͰخ͘͠ͳ͍͔ ͳɺͱࢥ͍·͢ɻ
  35. . . . . . . Ͱ͸ɺෳ਺ͷϫʔΩϯάίϐʔΛ࣋ͬ ͍ͯΔͱ͖ʹ commit ͨ͠ΒͲ͏ͳΔ

    ͷʁ ָ͍͜͠ͱʹͳΓ·͢ɻͪΌΜͱ ϦϑΝϨϯεΛ ࢦఆͯ͠ίϛοτ͢ΔΑ͏ʹ͠·͠ΐ͏ɻ
  36. . . . . . . ͳͥ git pull ͸

    fetch + merge ͳΜͰ͢ ͔ʁ rebase ͡Όͳ͍ͷʁ merge ͸ίϛοτ͕ഁյ͞Εͳ͍ (ίϛοτϋο γϡ஋͕มΘΒͳ͍) ͔Βͩͱࢥ͍·͢ɻrebase ͸յ͞ΕΔɻ҆શଆ͸ merge ͳͷͰɻ