Github の Pull Request にフォーカスした Overview. kanazawa.rb meetup 10 発表資料。
͜Θ͘ͳ͍ϓϧϦΫPull Request is not afraidLBOB[BXBSC
View Slide
Githubhttp://github.com
Pull Request
ͳʹ͢ΔͷʁࣗͷίʔυΛऔΓࠐΜͰΒ͏खଓ͖
͜Θ͍ͷʁ໎Λ͔͚ΔՄೳੑ͕͋ΔͷͰͪΐͬͱͼͼΔ
͜Θ͍ͷʁ͜Θ͘ͳ͍ʢ໎ͷதΛΕʣ
Let's Start
ϧʔϧ• ذݩ͕ಉ͡ϒϥϯνͲ͏͠Ͱ͑Δ• Ҏ্
Fork ʁFork ඞਢͰͳ͍Ή͠ΖҰਓͰͰ͖Δ
masterworkAAB1. checkout -b work2. commit
AABϚʔδͯ͠masterwork1. checkout -b work2. commit
AAB͍͍ΑB3. mergemasterwork1. checkout -b work2. commit
Shared Repository Model• ڞ༻ϦϙδτϦͰར༻• Collaborators• Organizations
ABBA B4. pushA1. clone5. mergemasterwork2. checkout -b work3. commit
Fork & Pull Model• User ؒͰར༻
A BA1. forkBA BA6. pullmasterworkmaster5. push2. clone3. checkout -b work4. commit
Send Pull Request
Receive Pull Request
Merge Pull Request
·ͬͨ͘؆୯ͩ
໎ύλʔϯ
໎ύλʔϯ• Pull Request ޙͷίϛοτ• ίϯϑϦΫτ• େྔͷίϛοτ
Pull Request ޙͷίϛοτ• Pull Request ͷରϒϥϯν• ΫϩʔζલʹՃίϛοτ͢Δͱ• Pull Request ͷରʹؚ·Εͯ͠·͏• Pull Request ઌʹ Notification ͕ඈͿ• ίʔυϨϏϡʔˍमਖ਼өͷ༻్ʹରԠ͢ΔͨΊ
ABA B4. pushA1. clonemasterwork2. checkout -b work3. commit
ABA B4. pushA1. clonemasterwork2. checkout -b work3. commitCCDD5. commit 7. commit6. push 8. push
Pull Request ޙͷίϛοτ• ίʔυϨϏϡʔత• ·ͬͨ͘ͳ͍ར༻๏• ผػೳͷ։ൃత• ͷ͋Δʢ໎ͳʣར༻๏• ผϒϥϯνͰ࡞ۀΛ͢Δ͜ͱͰղܾ
ίϯϑϦΫτ• ݩιʔεͷมߋʹै͍ͯ͠ͳ͍ͱൃੜ͢Δ• ͜·Ίͳ pull & rebase Ͱղܾ
ABXA B4. pushA1. clone5. mergemasterwork2. checkout -b work3. commitcommit
BmasterAB'XA6. push1. clone7. mergemasterwork2. checkout -b work3. commitB'B'X4. pullAcommitX5. rebase
A XA1. forkBA BA6. pullmasterworkmaster5. push2. clone3. checkout -b work4. commitcommit
B5. rebasemasterA XA1. forkB'A XA8. pullmasterworkmaster7. push2. clone3. checkout -b work4. commitcommitB'X5. pullB'
Tips : Fork ݩ͔Β pull1. git remote add upstream https://github.com//.git2. git checkout master3. git pull upstream master
Tips : rebase ? merge ?• merge Ͱͳ͘ rebase• ޙड़ͷίϛοτͷूΛ࣮ݱ͢ΔͨΊ• rebase લʹϒϥϯνΛ push ͍ͯͨ͠߹• rebase ޙʹ push ͢Δࡍ -f Φϓγϣϯ͕ඞཁ• rebase ͷޭࡑ͋Γ merge ͍Δ• ίϛοτͷू͠ͳ͍ӡ༻
େྔͷίϛοτ• ίϛοτ͕େྔʹ͋Δ Pull Request• ίʔσΟϯά࡞ۀ࣌ʹࡉ͔ʹίϛοτ͍ͯ͠ΕΑ͋͘Δঢ়گ
A PA B4. pushA1. clone5. mergemasterwork2. checkout -b work3. commiiiiiiiiiiitsBBBBBBBBBBBBBBPBBBBBBBBBBBBBBBPPPPPPPPPPPPPPP
େྔͷίϛοτ• Pull Request ઌͰͷίϛοτϩάංେԽ• ࠩΛ֬ೝ͢Δͷ͕ࠔʹͳΔ• rebase -i Ͱ1ίϛοτʹ·ͱΊΔ͜ͱͰղܾ1. git checkout work2. git rebase -i master3. pick, squash, squash, squash...
AA5. pushA1. clone6. mergemasterwork3. commiiiiiiiiiiitsBP'P'PP'2. checkout -b work4. rebase -i (squash)
Tips : Pull Request Branch• ࡞ۀ༻ϒϥϯνͷཤྺΛ͍ͨ͠߹• Pull Request ઐ༻ϒϥϯνΛ࡞͢Δ1. git checkout work2. git checkout -b pr-work3. git rebase -i master4. pick, squash, squash, squash...
Conclusion• Pull Request ා͘ͳ͍• ػೳຖͷϒϥϯνϯά• ͜·Ίͳ pull & rebase• ίϛοτͷूʢrebase -iʣ
Conclusion• Pull Request ා͘ͳ͍• ػೳຖͷϒϥϯνϯά• ͜·Ίͳ pull & rebase• ίϛοτͷूʢrebase -iʣ"ઈର" ͷϧʔϧͳ͍ʢͳʹ͕͓͜Δ͔Ѳͯ͑͠Α͍ʣ
·ͣࣗͷϦϙδτϦͰϒϥϯν͑͞Ε͙͢ࢼͤΔʂ
Thank youTomokazu Kiyoharahttp://github.com/kiyoharahttp://facebook.com/tomokazu.kiyohara
&YUSB• http://blog.qnyp.com/2013/05/28/pull-request-for-github-beginners/• http://kik.xii.jp/archives/179• http://d.hatena.ne.jp/hnw/20110528