Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

. . . . . .

Slide 3

Slide 3 text

. . . . . . ͓໿ଋ Git ͸

Slide 4

Slide 4 text

. . . . . . ͓໿ଋ Git ͸ ͬ͡ͱ͡Όͳ͍Α

Slide 5

Slide 5 text

. . . . . . ͓໿ଋ Git ͸ ͬ͡ͱ͡Όͳ͍Α ͗ͬͱͩΑ

Slide 6

Slide 6 text

. . . . . . ͸͡Ίʹ ͝ࢀՃ͋Γ͕ͱ͏͍͟͝·͢ɻ

Slide 7

Slide 7 text

. . . . . . ͸͡Ίʹ ͝ࢀՃ͋Γ͕ͱ͏͍͟͝·͢ɻ ͔͠͠࿩͍͍ͯ͠΋ͷ΍Βɻ

Slide 8

Slide 8 text

. . . . . . ͸͡Ίʹ ͝ࢀՃ͋Γ͕ͱ͏͍͟͝·͢ɻ ͔͠͠࿩͍͍ͯ͠΋ͷ΍Βɻ ಛʹͳʹ΋ཁٻ͕ͳ͔ͬͨͷͰద౰ʹ࿩͠ ·͢ɻ

Slide 9

Slide 9 text

. . . . . . Gitຊ ʮGit ʹΑΔόʔδϣϯ؅ཧʯ

Slide 10

Slide 10 text

. . . . . . Gitຊ ʮGit ʹΑΔόʔδϣϯ؅ཧʯ Git ʹؔ͢Δຊ͸࢛࡭໨ɻ

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

ॾ஫ҙ . . . . . .

Slide 16

Slide 16 text

. . . . . . ॾ஫ҙ ࢒೦ͳ͕Βࠓ೔ͷ࿩Λฉ͍ͯ΋ Git ͸ཧղͰ ͖·ͤΜɻ

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

. . . . . . ஶऀ঺հ ؠদ ৴༸

Slide 23

Slide 23 text

. . . . . . ஶऀ঺հ ؠদ ৴༸ খ઒ ৳Ұ࿠

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

. . . . . . ࣗݾ঺հ ؠদ ৴༸ʢ͍Θ·ͭ ͷͿͻΖʣ Twitter: @iwamatsu Debian Project Official Developer OpenCV, Bluetooth, Mozc, ͳͲͷϝϯςφ ϯε ීஈ͸ձࣾһ Linux kernel, glibc, ϒʔτϩʔμͷ։ൃͳͲ

Slide 27

Slide 27 text

Git ࠷৽ͬΆ͍৘ใ . . . . . .

Slide 28

Slide 28 text

. . . . . . Git ࠷৽ͬΆ͍৘ใ ࠷৽͸ v1.7.9.2ʢ2012/2/22 ϦϦʔεʣ v1.7.10 coming soon? git clone --single-branch git push --prune ࣍ظ mysysgit Ͱ UTF8 ରԠΒ͍͠

Slide 29

Slide 29 text

Git ࠷৽ͬΆ͍৘ใ 1.7.0 ͔Βݸਓతʹॏཁͱࢥͬͨ΋ͷΛϐοΫΞο ϓ͠·ͨ͠ɻ . . . . . .

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

. . . . . . 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 ʹઃఆ͞ΕΔɻ

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

. . . . . . 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

Slide 39

Slide 39 text

. . . . . . 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

Slide 40

Slide 40 text

. . . . . . 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.

Slide 41

Slide 41 text

. . . . . . Git ࠷৽ͬΆ͍৘ใ git reset --keep git reset --merge

Slide 42

Slide 42 text

. . . . . . 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 ͞Εͨ΋ͷ͸ফ͞ΕΔɻ

Slide 43

Slide 43 text

. . . . . . Git ࠷৽ͬΆ͍৘ใ gnu patch ͕ git ܗࣜΛαϙʔτ (Not yet released)ɻ

Slide 44

Slide 44 text

. . . . . . Git ࠷৽ͬΆ͍৘ใ ͜͜ಡΉͱ໘ന͍ʢᖛ໺͞Μ͕ߋ৽͍ͯ͠Δʣ http://git-blame.blogspot.com/

Slide 45

Slide 45 text

πʔϧͷ࿩ . . . . . .

Slide 46

Slide 46 text

. . . . . . tig tig: ίϯιʔϧ͔Β࢖͑Δ git ΠϯλʔϑΣΠε

Slide 47

Slide 47 text

. . . . . . tig Vim ʹ͍ۙૢ࡞ײͰ࢖͑Δɻ ϏϡʔΞͱͯ͠͸࢖͍΍͍͢ɻ Git ΠϯλʔϑΣΠεͱͯ͠͸ඍົʢදࣔʹ ϦϑϨογϡૢ࡞͕ඞཁͩͬͨΓʣ ɻ

Slide 48

Slide 48 text

. . . . . . TortoiseGit, GitX, Gity, Gitbox TortoiseGit: Windows ༻ GUI GitX: OS X ༻ GUI Gity: OS X ༻ GUI Gitbox: OS X ༻ GUI ࢖ͬͯແ͍ͷͰΑ͘Θ͔Βͳ͍Ͱ͢ɻ

Slide 49

Slide 49 text

. . . . . . stgit/guilt stgit/guilt: ύονΛελοΫͱͯ͠ߟ͑Δπʔϧ

Slide 50

Slide 50 text

. . . . . . stgit/guilt ύονηοτΛ؅ཧ͍ͨ͠ਓ޲͚ɻ

Slide 51

Slide 51 text

. . . . . . stgit/guilt ύονηοτΛ؅ཧ͍ͨ͠ਓ޲͚ɻ ίϛοτͨ͠ॱ൪ʢཤྺʣ͸ॏཁͰ͸ͳ͘ɺ ݁Ռʹ໰୊͕ͳ͍ͳΒ OK ͱ͍͏ߟ͑ɻ

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

Subversion͔ΒGit΁ Ҡߦ͢Δͱ͖ͷ໰୊ʹ͍ͭͯ؆୯ ʹޠΔ ɹ খ઒ ৳Ұ࿠ . . . . . .

Slide 56

Slide 56 text

ຊ͔Βফ͞ΕͨηΫγϣϯ: git bundle ʹ͍ͭͯޠͬͯΈΔ ɹ ؠদ ৴༸ . . . . . .

Slide 57

Slide 57 text

ຊͷ಺༰ʹ͍ͭͯͷ࣭ٙԠ౴ . . . . . .

Slide 58

Slide 58 text

ࠓޙͷ࿩ . . . . . .

Slide 59

Slide 59 text

. . . . . . ࠓޙͷ࿩ Git ษڧձʁ Git ϋϯζΦϯʁ Git ίʔυϦʔςΟϯάʁ

Slide 60

Slide 60 text

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

Slide 61

Slide 61 text

͜͜·Ͱ͕ϓϨθϯͰɺҎԼ͸్தͰग़࣭ͨ໰ͳ ͲΛॻ͍͓͖ͯ·͢ɻ ଞʹ͜Μͳͷ͋ͬͨΑͱ͔͋Γ·ͨ͠Βڭ͑ͯ͘ ͍ͩ͞ɻ . . . . . .

Slide 62

Slide 62 text

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

Slide 63

Slide 63 text

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

Slide 64

Slide 64 text

. . . . . . Ͱ͸ɺෳ਺ͷϫʔΩϯάίϐʔΛ࣋ͬ ͍ͯΔͱ͖ʹ commit ͨ͠ΒͲ͏ͳΔ ͷʁ ָ͍͜͠ͱʹͳΓ·͢ɻͪΌΜͱ ϦϑΝϨϯεΛ ࢦఆͯ͠ίϛοτ͢ΔΑ͏ʹ͠·͠ΐ͏ɻ

Slide 65

Slide 65 text

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