Slide 1

Slide 1 text

gitのブランチ戦略 Takashi Abe Mynet Inc. 24/02 2015

Slide 2

Slide 2 text

git初心者あるある

Slide 3

Slide 3 text

ブランチの子供が出来過ぎ てマージ困難

Slide 4

Slide 4 text

いつの間にかmasterに取り 込まれるコミット

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

ブランチ戦略決めましょう

Slide 7

Slide 7 text

ブランチ戦略とは 新機能開発やリリースなど、各用途専用のブランチを用 意する 各ブランチに明確な意図を持たせて混ざらないように することで複数人での開発をやりやすくする

Slide 8

Slide 8 text

メジャーなブランチ戦略 git-flow 5種類のブランチを使って機能開発、リリース、hotfix などの役割を明確に分けている 堅牢なモデルだが慣れないうちは煩雑 github flow masterと機能開発ブランチのみを持つ masterはすぐデプロイするワイルドなモデル

Slide 9

Slide 9 text

git-flow

Slide 10

Slide 10 text

使用するブランチ develop 開発安定版ブランチ。featureブランチなどはここにマージされる feature 機能開発用ブランチ。機能開発やバグフィックスなどの開発を機能ごとに開発する ためのブランチ。最終的にdevelopにマージされる release リリース用ブランチ。リリース時にdevelopから作成される。リリース作業中でも developに対する変更を行えるようになる。 master 安定版ブランチ。リリースを終えたreleaseブランチからmasterにマージされる。 hotfix 緊急のバグ修正ブランチ。masterから作成され、releaseブランチを介さずにそのま まmasterにマージされる。

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

feature

Slide 13

Slide 13 text

release

Slide 14

Slide 14 text

hotfix

Slide 15

Slide 15 text

git-flowの特徴 releaseやhotfixのための手順が明確に定められていて プロダクションに上げるコードを堅牢に保つことが出来 る 使用するブランチが多いため手順が煩雑

Slide 16

Slide 16 text

github flow

Slide 17

Slide 17 text

使用するブランチ master 安定版、リリース用ブランチ。featureブランチは全て masterにマージされ、即座にデプロイ対象になる。 feature 機能開発用ブランチ。masterから作成され、そのまま masterにマージされる。

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

github flowの特徴 使用するブランチが最小限で理解しやすい masterを常にデプロイ可能な状態にしないといけない コードレビュー CI

Slide 20

Slide 20 text

弊チームのブランチ戦略

Slide 21

Slide 21 text

やりたいこと

Slide 22

Slide 22 text

やりたいこと 規模の大きい新機能など、複数人で1つの機能を作りた い リリースする機能は絞る場合がある リリース前にQA環境でQAしたい

Slide 23

Slide 23 text

git-flowのアレンジ

Slide 24

Slide 24 text

featureブランチの亜種を2 つ追加した

Slide 25

Slide 25 text

追加したfeatureブランチ feature-develop 1つの大きな機能における開発安定版。developから 作成され、feature-developから更にfeatureブランチ を作成する。featureブランチはfeature-developブラ ンチにマージされる。 QA QA用ブランチ。developから作成され、次回リリースに 盛り込むブランチを全てマージする。ここにはfeature- developブランチが含まれる。

Slide 26

Slide 26 text

機能開発フロー developブランチからfeature-developブランチを作成 feature-developブランチからfeatureブランチを作成 featureブランチをfeature-developブランチにマージ

Slide 27

Slide 27 text

リリースフロー feature-developブランチをQAブランチにマージ QA中の修正は全てQAブランチにマージ QAが完了したらreleaseブランチにマージ

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

tips

Slide 30

Slide 30 text

ブランチを作るとき ブランチ作成時は常にリモートブランチから作成するこ とを意識する git checkout -b feature/a origin/develop GitHubなどのGUIフロントエンドが使えればそれでも 古いローカルブランチから作成することによってリモート の最新コミットが取り込まれない コンフリクトの原因になる

Slide 31

Slide 31 text

CUIでやる SourceTreeなど優秀なGUIツールを使うのもいいが、git の構造を知るにはCUIでやると捗る ローカル/リモートリポジトリの違い working copy,index,ローカルリポジトリの違い 慣れるとGUIでやるよりも捗る(と思う)