Slide 1

Slide 1 text

Git தڃऀʹͳΔͨΊͷ rebase ೖ໳ # ୈ9ճϥϯνLT @takasp 2021೥4݄16೔

Slide 2

Slide 2 text

ࣗݾ঺հ • @takasp a.k.a. tackey • ࡛ۄݝੜ·Ε౦ژҭͪ • झຯɿΪλʔɺϐΞϊ • ྖҬɿόοΫΤϯυ ɹɹɹΠϯϑϥ

Slide 3

Slide 3 text

ௌߨର৅ऀ • Git ͷ add, commit, push ͳͲͷجຊίϚϯυ͸ཧղ ͍ͯ͠Δਓ • rebase ͸஌Βͳ͍ਓ • rebase ͸஌ͬͯΔ͚Ͳɺ࢖ͬͨ͜ͱͳ͍ɺ࢖͚ͬͨͲ Α͘෼͔Βͳ͍ਓ • rebase ΛͲ͏͍͏࣌ʹ࢖ͬͨΒྑ͍͔෼͔Βͳ͍ਓ

Slide 4

Slide 4 text

git rebase ίϚϯυͱ͸ • Ұ࿈ͷίϛοτཤྺΛमਖ਼͢ΔίϚϯυ • ྫ͑͹ • ҎલͷίϛοτϝοηʔδΛमਖ਼͢Δ • ෳ਺ͷίϛοτΛ·ͱΊΔ • ෆཁʹͳͬͨίϛοτΛ࡟আ͢Δ

Slide 5

Slide 5 text

git merge

Slide 6

Slide 6 text

git merge ίϚϯυͷ͓͞Β͍ • ผͷϒϥϯνͷมߋΛऔΓࠐΉ৔߹ • Ϛʔδͷ݁Ռ͸େ͖͘ 3 ͭʹ෼͚ΒΕΔ • Fast Forward : ยํͷϒϥϯν͕ݹ͘ɺऔΓࠐΈઌͷϒϥϯν͕ͦ ͷ··औΓࠐΉ৔߹ • Auto Merge : ಉ͡ϑΝΠϧͷมߋ͕͋ΓɺࣗಈͰϚʔδͰ͖Δ৔߹ • Conflict : ಉ͡ϑΝΠϧͷಉ͡ՕॴΛมߋ͍ͯͯ͠ɺGit ʹ͸൑அ͕ Ͱ͖ͳ͍৔߹

Slide 7

Slide 7 text

git mergeʢFast Forwardʣ • લʹਐΉ͚ͩ 1 2 3 task main

Slide 8

Slide 8 text

git mergeʢFast Forwardʣ • લʹਐΉ͚ͩ 1 2 3 task main merge

Slide 9

Slide 9 text

git mergeʢAuto Mergeʣ • Ϛʔδίϛοτ͕ൃߦ͞ΕΔ 1 2 3 4 task main

Slide 10

Slide 10 text

git mergeʢAuto Mergeʣ • Ϛʔδίϛοτ͕ൃߦ͞ΕΔ 1 2 3 merge 4 task main 5

Slide 11

Slide 11 text

• ಉ͡ߦΛฤू͍ͯͯ͠ Git ͕ղܾͰ͖ͳ͍ git mergeʢConflictʣ 1 2 3 4 task main

Slide 12

Slide 12 text

• ಉ͡ߦΛฤू͍ͯͯ͠ Git ͕ղܾͰ͖ͳ͍ git mergeʢConflictʣ 1 2 3 merge 4 task main Conflict

Slide 13

Slide 13 text

git rebase

Slide 14

Slide 14 text

git mergeʢAuto Mergeʣ࠶ܝ • Ϛʔδίϛοτ͕ൃߦ͞ΕΔ 1 2 3 merge 4 task main 5

Slide 15

Slide 15 text

git rebase • task ϒϥϯν͕ main ϒϥϯνʹ࠶ద༻͞Εɺ Fast Forward ϚʔδͰ͖Δ 1 2 3 4 task main

Slide 16

Slide 16 text

git rebase • task ϒϥϯν͕ main ϒϥϯνʹ࠶ద༻͞Εɺ Fast Forward ϚʔδͰ͖Δ 1 2 3 rebase 4 task main 4’

Slide 17

Slide 17 text

git rebase -i (--interactive) • ҎԼͷૢ࡞͕ߦ͑Δ • drop : ίϛοτΛ࡟আ͢Δ • exec : ίϛοτʹରͯ͠ shell Λ࢖ͬͯίϚϯυΛ࣮ߦ͢Δ • fixup : ίϛοτΛ·ͱΊΔ • squash : ίϛοτΛ·ͱΊͯɺίϛοτϝοηʔδΛฤू͢Δ • edit : ίϛοτʹมߋΛՃ͑Δ • reword : ίϛοτϝοηʔδΛฤू͢Δ • pick : ίϛοτΛݱঢ়ҡ࣋͢Δ

Slide 18

Slide 18 text

merge ͱ rebase ͷҧ͍ • merge • ίϛοτཤྺΛഁյ͠ͳ͍ • ෆཁͳίϛοτ΍Ϛʔδίϛοτ͕ଟ͍ͱ ཤྺΛӾཡͮ͠Β͍ • rebase • ίϛοτཤྺ͕៉ྷʹͳΔ • ҧ͏ίϛοτͱͯ͠࠶࡞੒͞ΕΔ

Slide 19

Slide 19 text

git rebase ͷ஫ҙ఺ • ϦϞʔτϦϙδτϦʹެ։ͨ͠ίϛοτ͸ rebase ͠ͳ͍͜ͱ͕๬·͍͠ • ίϛοτͷվม͕ՄೳͳͷͰɺଞͷϢʔβʔ ͕࢖༻͢Δ৔߹΍ Pull Request ͰϨϏϡʔΛ ड͚Δίϛοτͷ಺༰Λมߋͯ͠͠·͏

Slide 20

Slide 20 text

git rebase Λ࢖͏Ϟνϕʔγϣϯ ͱ࢖͍ಓ • ޙ͔ΒίϛοτཤྺΛݟͨ࣌ʹԿΛ͍ͯ͠Δ͔ ෼͔Γ΍͍ͨ͘͢͠ • ϩʔΧϧϒϥϯνʹϚʔδίϛοτΛੜ੒ͤͣ ʹɺϦϞʔτϒϥϯνͷมߋΛऔΓࠐΈ͍ͨ࣌ • ίϛοτͷॱ൪Λม͍͑ͨͱ͖ • ίϛοτΛ·ͱΊ͍ͨͱ͖

Slide 21

Slide 21 text

git pull

Slide 22

Slide 22 text

ϦϞʔτ௥੻ϒϥϯνͱ ্ྲྀϒϥϯν ϩʔΧϧϦϙδτϦ ϦϞʔτϦϙδτϦ NBJO UBTL PSJHJONBJO PSJHJOUBTL NBJO UBTL ϦϞʔτ௥੻ϒϥϯν origin #͸"ͷ্ྲྀϒϥϯν "͸#ͷϦϞʔτ௥੻ϒϥϯν B B A A ϩʔΧϧ ϒϥϯν

Slide 23

Slide 23 text

git pull ͷڍಈ • git pull = git fetch + git merge • git fetch : ϦϞʔτϦϙδτϦͷมߋΛ ϦϞʔτ௥੻ϒϥϯνʹऔΓࠐΉ • git pull ίϚϯυͰҾ਺Λলུͯ͠΋ಈ࡞͢Δ ͷ͸ɺ্ྲྀϒϥϯν͕ઃఆ͞Ε͍ͯΔͨΊ

Slide 24

Slide 24 text

git pull ͷڍಈ ϩʔΧϧϦϙδτϦ ϦϞʔτϦϙδτϦ NBJO UBTL PSJHJONBJO PSJHJOUBTL NBJO UBTL ϦϞʔτ௥੻ϒϥϯν origin ϩʔΧϧ ϒϥϯν git merge git fetch git pull

Slide 25

Slide 25 text

git pull -r (--rebase) • git merge ͷڍಈΛ git rebase ʹม͑Δ͜ͱ͕Ͱ͖Δ • git pull ࣌ʹൃੜՄೳੑͷ͋ΔϚʔδίϛοτΛ ࡞੒ͨ͘͠ͳ͍৔߹΍ίϛοτϩάΛ៉ྷʹ ͠ͳ͕ΒมߋΛऔΓࠐΈ͍ͨ৔߹ʹ࢖༻͢Δ • git rebase ͷίϛοτվมͷՄೳੑ͕͋ΔͷͰɺ push લͳͲͷར༻ʹݶΔ΄͏͕ྑ͍

Slide 26

Slide 26 text

git pull -r ͷڍಈ ϩʔΧϧϦϙδτϦ ϦϞʔτϦϙδτϦ NBJO UBTL PSJHJONBJO PSJHJOUBTL NBJO UBTL ϦϞʔτ௥੻ϒϥϯν origin ϩʔΧϧ ϒϥϯν git rebase git fetch git pull -r

Slide 27

Slide 27 text

DEMO

Slide 28

Slide 28 text

·ͱΊ

Slide 29

Slide 29 text

·ͱΊ • git rebase Λ࢖͏ͱίϛοτཤྺ͕៉ྷʹͳΔ • ίϛοτվมΛ൐͏ͷͰ༻๏༻ྔΛकͬͯ࢖͍ ·͠ΐ͏