Submit Search
Upload
こわくないプルリク
•
7 likes
•
4,662 views
Tomokazu Kiyohara
Follow
Github の Pull Request にフォーカスした Overview. kanazawa.rb meetup 10 発表資料。
Read less
Read more
Technology
Entertainment & Humor
Report
Share
Report
Share
1 of 51
Recommended
GitHubの機能を活用したGitHub Flowによる開発の進め方
GitHubの機能を活用したGitHub Flowによる開発の進め方
Takeshi Mikami
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
Takeshi Mikami
Git勉強会 2016 Gitで卒論を管理しよう回
Git勉強会 2016 Gitで卒論を管理しよう回
kinme modoki
猫にはわからないGit講座
猫にはわからないGit講座
Yusei Yamanaka
Shizudev git hub宿題
Shizudev git hub宿題
Tadahiro Ishisaka
git ~start PullRequest~
git ~start PullRequest~
Souichirou Andou
Gitの使い方あれこれ
Gitの使い方あれこれ
よしだ あつし
Git 勉強会
Git 勉強会
kinme modoki
Recommended
GitHubの機能を活用したGitHub Flowによる開発の進め方
GitHubの機能を活用したGitHub Flowによる開発の進め方
Takeshi Mikami
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
Takeshi Mikami
Git勉強会 2016 Gitで卒論を管理しよう回
Git勉強会 2016 Gitで卒論を管理しよう回
kinme modoki
猫にはわからないGit講座
猫にはわからないGit講座
Yusei Yamanaka
Shizudev git hub宿題
Shizudev git hub宿題
Tadahiro Ishisaka
git ~start PullRequest~
git ~start PullRequest~
Souichirou Andou
Gitの使い方あれこれ
Gitの使い方あれこれ
よしだ あつし
Git 勉強会
Git 勉強会
kinme modoki
Wip prをやってみた
Wip prをやってみた
Akira Suenami
RubyでGUIアプリケーションを書く
RubyでGUIアプリケーションを書く
Misao X
Git Workshop 20130720
Git Workshop 20130720
YAMANE Toshiaki
HerokuでRails3.2 we love herokuの事例
HerokuでRails3.2 we love herokuの事例
Naoto Koshikawa
Appcelerator TitaniumでSocket.io (1.x)
Appcelerator TitaniumでSocket.io (1.x)
Toshiro Yagi
2018 07-18 git-hub講座
2018 07-18 git-hub講座
貴一 末田
Gitlab-CIを活かして自動化してみよう
Gitlab-CIを活かして自動化してみよう
Yoshiyuki Nakahara
Composer による依存管理 と Packagist によるライブラリの公開
Composer による依存管理 と Packagist によるライブラリの公開
Shogo Kawahara
Composer
Composer
Shogo Kawahara
Git (実践入門編)
Git (実践入門編)
Naomichi Yamakita
ブログを Octopress 2 + GitHub Pages から Jekyll 3 + AMP + Netlify に移行した話
ブログを Octopress 2 + GitHub Pages から Jekyll 3 + AMP + Netlify に移行した話
Kazuhiro Nishiyama
Git level1
Git level1
Hirokazu Fukami
あなたの安心を高速に守る Container-based CI
あなたの安心を高速に守る Container-based CI
Wataru MIYAGUNI
Gitの勉強 紹介編-
Gitの勉強 紹介編-
Kentarou Kurashige
Linea del tiempo
Linea del tiempo
Jhonatan Rodriguez Torres
Развитие малого и среднего бизнеса в Московской области. Итоги 2015 года.
Развитие малого и среднего бизнеса в Московской области. Итоги 2015 года.
pavelvk
Имущественная поддержка субъектов малого и среднего бизнеса
Имущественная поддержка субъектов малого и среднего бизнеса
pavelvk
Trabajo d-elas-nics (1)
Trabajo d-elas-nics (1)
Spark Inga Quispe
Presentacion feminicidio.
Presentacion feminicidio.
Oscar Antonio Contreras González
гтмсх
гтмсх
Анатолий Крячко
Blue Coat Certificate ProxySG Administartor
Blue Coat Certificate ProxySG Administartor
Sassan Saharkhiz_ CRISC
Location based service
Location based service
Edbert Liu
More Related Content
What's hot
Wip prをやってみた
Wip prをやってみた
Akira Suenami
RubyでGUIアプリケーションを書く
RubyでGUIアプリケーションを書く
Misao X
Git Workshop 20130720
Git Workshop 20130720
YAMANE Toshiaki
HerokuでRails3.2 we love herokuの事例
HerokuでRails3.2 we love herokuの事例
Naoto Koshikawa
Appcelerator TitaniumでSocket.io (1.x)
Appcelerator TitaniumでSocket.io (1.x)
Toshiro Yagi
2018 07-18 git-hub講座
2018 07-18 git-hub講座
貴一 末田
Gitlab-CIを活かして自動化してみよう
Gitlab-CIを活かして自動化してみよう
Yoshiyuki Nakahara
Composer による依存管理 と Packagist によるライブラリの公開
Composer による依存管理 と Packagist によるライブラリの公開
Shogo Kawahara
Composer
Composer
Shogo Kawahara
Git (実践入門編)
Git (実践入門編)
Naomichi Yamakita
ブログを Octopress 2 + GitHub Pages から Jekyll 3 + AMP + Netlify に移行した話
ブログを Octopress 2 + GitHub Pages から Jekyll 3 + AMP + Netlify に移行した話
Kazuhiro Nishiyama
Git level1
Git level1
Hirokazu Fukami
あなたの安心を高速に守る Container-based CI
あなたの安心を高速に守る Container-based CI
Wataru MIYAGUNI
Gitの勉強 紹介編-
Gitの勉強 紹介編-
Kentarou Kurashige
What's hot
(14)
Wip prをやってみた
Wip prをやってみた
RubyでGUIアプリケーションを書く
RubyでGUIアプリケーションを書く
Git Workshop 20130720
Git Workshop 20130720
HerokuでRails3.2 we love herokuの事例
HerokuでRails3.2 we love herokuの事例
Appcelerator TitaniumでSocket.io (1.x)
Appcelerator TitaniumでSocket.io (1.x)
2018 07-18 git-hub講座
2018 07-18 git-hub講座
Gitlab-CIを活かして自動化してみよう
Gitlab-CIを活かして自動化してみよう
Composer による依存管理 と Packagist によるライブラリの公開
Composer による依存管理 と Packagist によるライブラリの公開
Composer
Composer
Git (実践入門編)
Git (実践入門編)
ブログを Octopress 2 + GitHub Pages から Jekyll 3 + AMP + Netlify に移行した話
ブログを Octopress 2 + GitHub Pages から Jekyll 3 + AMP + Netlify に移行した話
Git level1
Git level1
あなたの安心を高速に守る Container-based CI
あなたの安心を高速に守る Container-based CI
Gitの勉強 紹介編-
Gitの勉強 紹介編-
Viewers also liked
Linea del tiempo
Linea del tiempo
Jhonatan Rodriguez Torres
Развитие малого и среднего бизнеса в Московской области. Итоги 2015 года.
Развитие малого и среднего бизнеса в Московской области. Итоги 2015 года.
pavelvk
Имущественная поддержка субъектов малого и среднего бизнеса
Имущественная поддержка субъектов малого и среднего бизнеса
pavelvk
Trabajo d-elas-nics (1)
Trabajo d-elas-nics (1)
Spark Inga Quispe
Presentacion feminicidio.
Presentacion feminicidio.
Oscar Antonio Contreras González
гтмсх
гтмсх
Анатолий Крячко
Blue Coat Certificate ProxySG Administartor
Blue Coat Certificate ProxySG Administartor
Sassan Saharkhiz_ CRISC
Location based service
Location based service
Edbert Liu
Semio fichas
Semio fichas
Luis Alberto Choque
Categorias del comercio electronico
Categorias del comercio electronico
Patricia Cedilo
7.Fórmulas y funciones de excel
7.Fórmulas y funciones de excel
Marilyn Cuasapas
Mahindra KUV100 Brochure
Mahindra KUV100 Brochure
RushLane
Как открыть Булочную. Подсказка начинающему предпринимателю.
Как открыть Булочную. Подсказка начинающему предпринимателю.
pavelvk
Online Algorithms - An Introduction
Online Algorithms - An Introduction
Amrinder Arora
Learning to learn
Learning to learn
Amrinder Arora
Viewers also liked
(15)
Linea del tiempo
Linea del tiempo
Развитие малого и среднего бизнеса в Московской области. Итоги 2015 года.
Развитие малого и среднего бизнеса в Московской области. Итоги 2015 года.
Имущественная поддержка субъектов малого и среднего бизнеса
Имущественная поддержка субъектов малого и среднего бизнеса
Trabajo d-elas-nics (1)
Trabajo d-elas-nics (1)
Presentacion feminicidio.
Presentacion feminicidio.
гтмсх
гтмсх
Blue Coat Certificate ProxySG Administartor
Blue Coat Certificate ProxySG Administartor
Location based service
Location based service
Semio fichas
Semio fichas
Categorias del comercio electronico
Categorias del comercio electronico
7.Fórmulas y funciones de excel
7.Fórmulas y funciones de excel
Mahindra KUV100 Brochure
Mahindra KUV100 Brochure
Как открыть Булочную. Подсказка начинающему предпринимателю.
Как открыть Булочную. Подсказка начинающему предпринимателю.
Online Algorithms - An Introduction
Online Algorithms - An Introduction
Learning to learn
Learning to learn
Similar to こわくないプルリク
今さら聞けない人のためのGitLabの始め方 Ubuntu編
今さら聞けない人のためのGitLabの始め方 Ubuntu編
VirtualTech Japan Inc./Begi.net Inc.
oFの話題が殆ど出ない oF jp Summer Workout
oFの話題が殆ど出ない oF jp Summer Workout
Tsuubito Ishii
Gitを使った運用方法
Gitを使った運用方法
Hiroki Nigorinuma
Git & GitHub & kintone でウルトラハッピー!
Git & GitHub & kintone でウルトラハッピー!
ymmt
Git/GitHub
Git/GitHub
Nariaki Tateiwa
Yapc2012資料
Yapc2012資料
matsuo kenji
GitLab から GitHub + CircleCI に乗り換えてチーム運用を改善しつつある話
GitLab から GitHub + CircleCI に乗り換えてチーム運用を改善しつつある話
R S
Multibranch Pipeline with Docker 入門編
Multibranch Pipeline with Docker 入門編
kimulla
一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理
Takafumi Yoshida
20120324 git training
20120324 git training
Takeshi AKIMA
Let’s translate FuelPHP docs!
Let’s translate FuelPHP docs!
Sho A
筋肉によるGoコードジェネレーション
筋肉によるGoコードジェネレーション
lestrrat
バージョン管理
バージョン管理
Misa Kondo
Develop flow
Develop flow
runeleaf
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
Naoto TAKAHASHI
Let’s translate FuelPHP docs! [RELOADED]
Let’s translate FuelPHP docs! [RELOADED]
Sho A
@s_ssk13さん向けGitHub入門
@s_ssk13さん向けGitHub入門
Takashi Imagire
gitを使って、レポジトリの一部抽出forkしてみました
gitを使って、レポジトリの一部抽出forkしてみました
Takako Miyagawa
githubハンズオン
githubハンズオン
Ayaka Ueda
Rails解説セミナー: Railsアプリケーションのデバッグ
Rails解説セミナー: Railsアプリケーションのデバッグ
Yohei Yasukawa
Similar to こわくないプルリク
(20)
今さら聞けない人のためのGitLabの始め方 Ubuntu編
今さら聞けない人のためのGitLabの始め方 Ubuntu編
oFの話題が殆ど出ない oF jp Summer Workout
oFの話題が殆ど出ない oF jp Summer Workout
Gitを使った運用方法
Gitを使った運用方法
Git & GitHub & kintone でウルトラハッピー!
Git & GitHub & kintone でウルトラハッピー!
Git/GitHub
Git/GitHub
Yapc2012資料
Yapc2012資料
GitLab から GitHub + CircleCI に乗り換えてチーム運用を改善しつつある話
GitLab から GitHub + CircleCI に乗り換えてチーム運用を改善しつつある話
Multibranch Pipeline with Docker 入門編
Multibranch Pipeline with Docker 入門編
一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理
20120324 git training
20120324 git training
Let’s translate FuelPHP docs!
Let’s translate FuelPHP docs!
筋肉によるGoコードジェネレーション
筋肉によるGoコードジェネレーション
バージョン管理
バージョン管理
Develop flow
Develop flow
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
Let’s translate FuelPHP docs! [RELOADED]
Let’s translate FuelPHP docs! [RELOADED]
@s_ssk13さん向けGitHub入門
@s_ssk13さん向けGitHub入門
gitを使って、レポジトリの一部抽出forkしてみました
gitを使って、レポジトリの一部抽出forkしてみました
githubハンズオン
githubハンズオン
Rails解説セミナー: Railsアプリケーションのデバッグ
Rails解説セミナー: Railsアプリケーションのデバッグ
More from Tomokazu Kiyohara
JavaScript で OS X を自動操作
JavaScript で OS X を自動操作
Tomokazu Kiyohara
Google Cloud Platform を支える技術 …のごく一部
Google Cloud Platform を支える技術 …のごく一部
Tomokazu Kiyohara
イベント継続のコツ
イベント継続のコツ
Tomokazu Kiyohara
Web API をデバックするときに必要なたったひとつのこと
Web API をデバックするときに必要なたったひとつのこと
Tomokazu Kiyohara
明日から使えるコーディングツール
明日から使えるコーディングツール
Tomokazu Kiyohara
Atom.io Quick Scripting
Atom.io Quick Scripting
Tomokazu Kiyohara
Text-Objects - vim's elegant function
Text-Objects - vim's elegant function
Tomokazu Kiyohara
LiveStyle for Vim - Quick start
LiveStyle for Vim - Quick start
Tomokazu Kiyohara
Github's HUB
Github's HUB
Tomokazu Kiyohara
対サイバー攻撃アラートシステム “DAEDALUS”(ダイダロス)の紹介
対サイバー攻撃アラートシステム “DAEDALUS”(ダイダロス)の紹介
Tomokazu Kiyohara
Beginner's Sinatra
Beginner's Sinatra
Tomokazu Kiyohara
Compact Web - Remind "web compression" -
Compact Web - Remind "web compression" -
Tomokazu Kiyohara
Zen coding15min
Zen coding15min
Tomokazu Kiyohara
USTREAMの視聴率を上げよう!
USTREAMの視聴率を上げよう!
Tomokazu Kiyohara
JavaScript Dynamic Loading
JavaScript Dynamic Loading
Tomokazu Kiyohara
More from Tomokazu Kiyohara
(15)
JavaScript で OS X を自動操作
JavaScript で OS X を自動操作
Google Cloud Platform を支える技術 …のごく一部
Google Cloud Platform を支える技術 …のごく一部
イベント継続のコツ
イベント継続のコツ
Web API をデバックするときに必要なたったひとつのこと
Web API をデバックするときに必要なたったひとつのこと
明日から使えるコーディングツール
明日から使えるコーディングツール
Atom.io Quick Scripting
Atom.io Quick Scripting
Text-Objects - vim's elegant function
Text-Objects - vim's elegant function
LiveStyle for Vim - Quick start
LiveStyle for Vim - Quick start
Github's HUB
Github's HUB
対サイバー攻撃アラートシステム “DAEDALUS”(ダイダロス)の紹介
対サイバー攻撃アラートシステム “DAEDALUS”(ダイダロス)の紹介
Beginner's Sinatra
Beginner's Sinatra
Compact Web - Remind "web compression" -
Compact Web - Remind "web compression" -
Zen coding15min
Zen coding15min
USTREAMの視聴率を上げよう!
USTREAMの視聴率を上げよう!
JavaScript Dynamic Loading
JavaScript Dynamic Loading
Recently uploaded
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
sugiuralab
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
Atomu Hidaka
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
sugiuralab
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
osamut
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
iPride Co., Ltd.
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
Shota Ito
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
iPride Co., Ltd.
Recently uploaded
(8)
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
こわくないプルリク
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