SlideShare a Scribd company logo
Submit Search
Upload
Login
Signup
こわくないプルリク
Report
Tomokazu Kiyohara
Follow
Software Developer at .
Jun. 15, 2013
•
0 likes
•
4,658 views
1
of
51
こわくないプルリク
Jun. 15, 2013
•
0 likes
•
4,658 views
Report
Technology
Entertainment & Humor
Github の Pull Request にフォーカスした Overview. kanazawa.rb meetup 10 発表資料。
Tomokazu Kiyohara
Follow
Software Developer at .
Recommended
GitHubの機能を活用したGitHub Flowによる開発の進め方
Takeshi Mikami
5.3K views
•
33 slides
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
Takeshi Mikami
858 views
•
32 slides
Git勉強会 2016 Gitで卒論を管理しよう回
kinme modoki
2.8K views
•
119 slides
猫にはわからないGit講座
Yusei Yamanaka
6.4K views
•
34 slides
Shizudev git hub宿題
Tadahiro Ishisaka
2.6K views
•
63 slides
git ~start PullRequest~
Souichirou Andou
626 views
•
22 slides
More Related Content
What's hot
Wip prをやってみた
Akira Suenami
15.2K views
•
7 slides
RubyでGUIアプリケーションを書く
Misao X
3.1K views
•
14 slides
Git Workshop 20130720
YAMANE Toshiaki
681 views
•
14 slides
HerokuでRails3.2 we love herokuの事例
Naoto Koshikawa
2.4K views
•
71 slides
Appcelerator TitaniumでSocket.io (1.x)
Toshiro Yagi
690 views
•
16 slides
2018 07-18 git-hub講座
貴一 末田
259 views
•
134 slides
What's hot
(14)
Wip prをやってみた
Akira Suenami
•
15.2K views
RubyでGUIアプリケーションを書く
Misao X
•
3.1K views
Git Workshop 20130720
YAMANE Toshiaki
•
681 views
HerokuでRails3.2 we love herokuの事例
Naoto Koshikawa
•
2.4K views
Appcelerator TitaniumでSocket.io (1.x)
Toshiro Yagi
•
690 views
2018 07-18 git-hub講座
貴一 末田
•
259 views
Gitlab-CIを活かして自動化してみよう
Yoshiyuki Nakahara
•
492 views
Composer による依存管理 と Packagist によるライブラリの公開
Shogo Kawahara
•
18.8K views
Composer
Shogo Kawahara
•
2.3K views
Git (実践入門編)
Naomichi Yamakita
•
5.2K views
ブログを Octopress 2 + GitHub Pages から Jekyll 3 + AMP + Netlify に移行した話
Kazuhiro Nishiyama
•
429 views
Git level1
Hirokazu Fukami
•
747 views
あなたの安心を高速に守る Container-based CI
Wataru MIYAGUNI
•
6.5K views
Gitの勉強 紹介編-
Kentarou Kurashige
•
825 views
Viewers also liked
Linea del tiempo
Jhonatan Rodriguez Torres
198 views
•
20 slides
Развитие малого и среднего бизнеса в Московской области. Итоги 2015 года.
pavelvk
2K views
•
20 slides
Имущественная поддержка субъектов малого и среднего бизнеса
pavelvk
95 views
•
39 slides
Trabajo d-elas-nics (1)
Spark Inga Quispe
186 views
•
13 slides
Presentacion feminicidio.
Oscar Antonio Contreras González
121 views
•
7 slides
гтмсх
Анатолий Крячко
155 views
•
1 slide
Viewers also liked
(15)
Linea del tiempo
Jhonatan Rodriguez Torres
•
198 views
Развитие малого и среднего бизнеса в Московской области. Итоги 2015 года.
pavelvk
•
2K views
Имущественная поддержка субъектов малого и среднего бизнеса
pavelvk
•
95 views
Trabajo d-elas-nics (1)
Spark Inga Quispe
•
186 views
Presentacion feminicidio.
Oscar Antonio Contreras González
•
121 views
гтмсх
Анатолий Крячко
•
155 views
Blue Coat Certificate ProxySG Administartor
Sassan Saharkhiz_ CRISC
•
68 views
Location based service
Edbert Liu
•
708 views
Semio fichas
Luis Alberto Choque
•
169 views
Categorias del comercio electronico
Patricia Cedilo
•
175 views
7.Fórmulas y funciones de excel
Marilyn Cuasapas
•
907 views
Mahindra KUV100 Brochure
RushLane
•
6.6K views
Как открыть Булочную. Подсказка начинающему предпринимателю.
pavelvk
•
1.6K views
Online Algorithms - An Introduction
Amrinder Arora
•
2.5K views
Learning to learn
Amrinder Arora
•
1.9K views
Similar to こわくないプルリク
今さら聞けない人のためのGitLabの始め方 Ubuntu編
VirtualTech Japan Inc./Begi.net Inc.
1.1K views
•
40 slides
oFの話題が殆ど出ない oF jp Summer Workout
Tsuubito Ishii
1.2K views
•
26 slides
Gitを使った運用方法
Hiroki Nigorinuma
5K views
•
10 slides
Git & GitHub & kintone でウルトラハッピー!
ymmt
35.3K views
•
19 slides
Git/GitHub
Nariaki Tateiwa
113 views
•
28 slides
Yapc2012資料
matsuo kenji
29.9K views
•
71 slides
Similar to こわくないプルリク
(20)
今さら聞けない人のためのGitLabの始め方 Ubuntu編
VirtualTech Japan Inc./Begi.net Inc.
•
1.1K views
oFの話題が殆ど出ない oF jp Summer Workout
Tsuubito Ishii
•
1.2K views
Gitを使った運用方法
Hiroki Nigorinuma
•
5K views
Git & GitHub & kintone でウルトラハッピー!
ymmt
•
35.3K views
Git/GitHub
Nariaki Tateiwa
•
113 views
Yapc2012資料
matsuo kenji
•
29.9K views
Multibranch Pipeline with Docker 入門編
kimulla
•
4.4K views
一人でもはじめるGitでバージョン管理
Takafumi Yoshida
•
221.6K views
20120324 git training
Takeshi AKIMA
•
3.6K views
Let’s translate FuelPHP docs!
Sho A
•
3.8K views
筋肉によるGoコードジェネレーション
lestrrat
•
4.5K views
バージョン管理
Misa Kondo
•
1.4K views
Develop flow
runeleaf
•
725 views
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
Naoto TAKAHASHI
•
1.5K views
Let’s translate FuelPHP docs! [RELOADED]
Sho A
•
1.8K views
@s_ssk13さん向けGitHub入門
Takashi Imagire
•
34.6K views
gitを使って、レポジトリの一部抽出forkしてみました
Takako Miyagawa
•
7.5K views
githubハンズオン
Ayaka Ueda
•
148 views
Rails解説セミナー: Railsアプリケーションのデバッグ
Yohei Yasukawa
•
1.6K views
ノンプログラマのGit入門
Muyuu Fujita
•
2.3K views
More from Tomokazu Kiyohara
JavaScript で OS X を自動操作
Tomokazu Kiyohara
714 views
•
75 slides
Google Cloud Platform を支える技術 …のごく一部
Tomokazu Kiyohara
1.1K views
•
37 slides
イベント継続のコツ
Tomokazu Kiyohara
862 views
•
26 slides
Web API をデバックするときに必要なたったひとつのこと
Tomokazu Kiyohara
1.4K views
•
38 slides
明日から使えるコーディングツール
Tomokazu Kiyohara
3.3K views
•
79 slides
Atom.io Quick Scripting
Tomokazu Kiyohara
2.3K views
•
23 slides
More from Tomokazu Kiyohara
(15)
JavaScript で OS X を自動操作
Tomokazu Kiyohara
•
714 views
Google Cloud Platform を支える技術 …のごく一部
Tomokazu Kiyohara
•
1.1K views
イベント継続のコツ
Tomokazu Kiyohara
•
862 views
Web API をデバックするときに必要なたったひとつのこと
Tomokazu Kiyohara
•
1.4K views
明日から使えるコーディングツール
Tomokazu Kiyohara
•
3.3K views
Atom.io Quick Scripting
Tomokazu Kiyohara
•
2.3K views
Text-Objects - vim's elegant function
Tomokazu Kiyohara
•
1.1K views
LiveStyle for Vim - Quick start
Tomokazu Kiyohara
•
4.9K views
Github's HUB
Tomokazu Kiyohara
•
5.9K views
対サイバー攻撃アラートシステム “DAEDALUS”(ダイダロス)の紹介
Tomokazu Kiyohara
•
1.4K views
Beginner's Sinatra
Tomokazu Kiyohara
•
2.8K views
Compact Web - Remind "web compression" -
Tomokazu Kiyohara
•
4.8K views
Zen coding15min
Tomokazu Kiyohara
•
837 views
USTREAMの視聴率を上げよう!
Tomokazu Kiyohara
•
1.1K views
JavaScript Dynamic Loading
Tomokazu Kiyohara
•
902 views
Recently uploaded
CatBoost on GPU のひみつ
Takuji Tahara
495 views
•
30 slides
遠隔お酌IoTLT2309.pptx
Yoshiaki Ito
134 views
•
12 slides
2023情報処理学会関西支部大会-G12.pdf
KoseiShimoda1
7 views
•
11 slides
gtk4_gem_usage.pdf
ssuser0ef4681
14 views
•
6 slides
テスト自動化.pdf
ssuserf8ea02
23 views
•
26 slides
GraphQLはどんな時に使うか
Yutaka Tachibana
8 views
•
37 slides
Recently uploaded
(12)
CatBoost on GPU のひみつ
Takuji Tahara
•
495 views
遠隔お酌IoTLT2309.pptx
Yoshiaki Ito
•
134 views
2023情報処理学会関西支部大会-G12.pdf
KoseiShimoda1
•
7 views
gtk4_gem_usage.pdf
ssuser0ef4681
•
14 views
テスト自動化.pdf
ssuserf8ea02
•
23 views
GraphQLはどんな時に使うか
Yutaka Tachibana
•
8 views
IGDA Japan SIG Audio #20-1 室内・野外でのマイク収録と整音.pdf
IGDA Japan SIG-Audio
•
108 views
MLOps Course Slides_JP(配布用).pdf
Yuya Yamamoto
•
39 views
画像生成AIの問題点
iPride Co., Ltd.
•
10 views
20230921_IoTLT_vol103_kitazaki_v1.pdf
Ayachika Kitazaki
•
151 views
CCoE実践者コミュニティ#1_CCoEが進めるセキュリティカイゼンの旅.pptx
Tomoaki Tada
•
43 views
松下研究室紹介_関西大学高槻キャンパスオープンキャンパス
Matsushita Laboratory
•
27 views
こわくないプルリク
1.
こわくないプルリク Pull Request is
not afraid 2013.06.14 - kanazawa.rb #10
2.
Github http://github.com
3.
Pull Request
4.
Pull Request
5.
なにするもの? 自分のコードを 取り込んでもらう手続き
6.
こわいの? 迷惑をかける 可能性があるので ちょっとびびる
7.
こわいの? こわくはない (迷惑の中身を知れば)
8.
Let's Start
9.
ルール • 分岐元が同じブランチどうしで使える • 以上
10.
Fork は? Fork は必須ではない むしろ一人でもできる
11.
master work A A B 1. checkout -b
work 2. commit
12.
A A B マージして master work 1. checkout -b
work 2. commit
13.
A A B いいよ B 3. merge master work 1. checkout
-b work 2. commit
14.
Shared Repository Model •
共用リポジトリで利用 • Collaborators • Organizations
15.
A B B A B 4. push A 1.
clone 5. merge master work 2. checkout -b work 3. commit
16.
Fork & Pull
Model • User 間で利用
17.
A B A 1. fork B A
B A 6. pull master work master 5. push 2. clone 3. checkout -b work 4. commit
18.
Send Pull Request
19.
Send Pull Request
20.
Send Pull Request
21.
Send Pull Request
22.
Receive Pull Request
23.
Receive Pull Request
24.
Merge Pull Request
25.
Merge Pull Request
26.
まったく簡単だ
27.
迷惑パターン
28.
迷惑パターン • Pull Request
後のコミット • コンフリクト • 大量のコミット
29.
Pull Request 後のコミット •
Pull Request の対象はブランチ • クローズ前に追加コミットすると • Pull Request の対象に含まれてしまう • Pull Request 先に Notification が飛ぶ • コードレビュー&修正反映の用途に対応するため
30.
A B A B 4. push A 1.
clone master work 2. checkout -b work 3. commit
31.
A B A B 4. push A 1.
clone master work 2. checkout -b work 3. commit C C D D 5. commit 7. commit 6. push 8. push
32.
Pull Request 後のコミット •
コードレビュー目的 • まったく問題ない利用法 • 別機能の開発目的 • 問題のある(迷惑な)利用法 • 別ブランチで作業をすることで解決
33.
コンフリクト • 元ソースの変更に追従していないと発生する • こまめな
pull & rebase で解決
34.
A B X A B 4. push A 1.
clone 5. merge master work 2. checkout -b work 3. commit commit
35.
B master A B' X A 6. push 1. clone 7.
merge master work 2. checkout -b work 3. commit B' B' X 4. pull A commit X 5. rebase
36.
A X A 1. fork B A
B A 6. pull master work master 5. push 2. clone 3. checkout -b work 4. commit commit
37.
B 5. rebase master A X A 1.
fork B' A X A 8. pull master work master 7. push 2. clone 3. checkout -b work 4. commit commit B' X 5. pull B'
38.
B 5. rebase master A X A 1.
fork B' A X A 8. pull master work master 7. push 2. clone 3. checkout -b work 4. commit commit B' X 5. pull B'
39.
Tips : Fork
元から pull 1. git remote add upstream https://github.com/<org>/<rep>.git 2. git checkout master 3. git pull upstream master
40.
B 5. rebase master A X A 1.
fork B' A X A 8. pull master work master 7. push 2. clone 3. checkout -b work 4. commit commit B' X 5. pull B'
41.
Tips : rebase
? merge ? • merge ではなく rebase • 後述のコミットの集約を実現するため • rebase 前にブランチを push していた場合 • rebase 後に push する際は -f オプションが必要 • rebase の功罪もあり merge 派もいる • コミットの集約はしない運用
42.
大量のコミット • コミット数が大量にある Pull
Request • コーディング作業時に細かにコミットしていれば よくある状況
43.
A P A B 4.
push A 1. clone 5. merge master work 2. checkout -b work 3. commiiiiiiiiiiits BBBBBBBBBBBBBBP BBBBBBBBBBBBBBBP PPPPPPPPPPPPPP
44.
大量のコミット • Pull Request
先でのコミットログ肥大化 • 差分を確認するのが困難になる • rebase -i で1コミットにまとめることで解決 1. git checkout work 2. git rebase -i master 3. pick, squash, squash, squash...
45.
A A 5. push A 1. clone 6.
merge master work 3. commiiiiiiiiiiits BP' P' P P' 2. checkout -b work 4. rebase -i (squash)
46.
Tips : Pull
Request Branch • 作業用ブランチの履歴を残したい場合 • Pull Request 専用ブランチを作成する 1. git checkout work 2. git checkout -b pr-work 3. git rebase -i master 4. pick, squash, squash, squash...
47.
Conclusion • Pull Request
は怖くない • 機能毎のブランチング • こまめな pull & rebase • コミットの集約(rebase -i)
48.
Conclusion • Pull Request
は怖くない • 機能毎のブランチング • こまめな pull & rebase • コミットの集約(rebase -i) "絶対" のルールはない (なにがおこるか把握して使えばよい)
49.
まずは自分のリポジトリで ブランチさえ切ればすぐ試せる!
50.
Thank you Tomokazu Kiyohara http://github.com/kiyohara http://facebook.com/tomokazu.kiyohara
51.
Extra • 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