gfls入門 - gitflowっぽいアレ-

20
GFLS 入門 GFLS means GitFlow Like Style © 2015 Takahashi Fumiki

Upload: -

Post on 18-Jul-2015

347 views

Category:

Internet


0 download

TRANSCRIPT

Page 1: GFLS入門 - GitFlowっぽいアレ-

GFLS 入門 GFLS means GitFlow Like Style

© 2015 Takahashi Fumiki

Page 2: GFLS入門 - GitFlowっぽいアレ-

GFLS ≒ GitFlow

GitFlowと似てる

Page 3: GFLS入門 - GitFlowっぽいアレ-

いつ使うの?• 商用環境でミスをすることが許されない怖い環境

• 計画的・定時リリースが行われる環境

• 複数の開発者が存在する環境

• 課題がたくさん存在し、それが必ずしも採用されるとは限らない環境

• 「あの広告表示機能、やっぱいらないわ」という環境

• Githubじゃないので、GithubFlowできない環境

Page 4: GFLS入門 - GitFlowっぽいアレ-

基本ワークフローmaster

develop

feature

release

ロゴの差し替え

タブの追加

2015/03/12公開分

開発デプロイ

商用デプロイ

Page 5: GFLS入門 - GitFlowっぽいアレ-

基本原則• masterブランチはどのコミットを商用環境にリリースしても問題のないブランチである。

• developブランチは開発の起点となるブランチであり、ステージング環境相当である。

• すべての開発はdevelopブランチから枝分かれしたfeatureブランチで行う。

• 1つのfeatureブランチは課題管理システムにおける1つの課題に相当する。

• masterおよびdevelopへのデプロイはreleaseブランチを作成することで行う。

• masterブランチに対してのみ、例外的にhotfixブランチを作成することが許される。

• すべてのブランチをpushする。

Page 6: GFLS入門 - GitFlowっぽいアレ-

手順• 課題に紐付いたfeatureブランチを作成する。名前はfeature/課題IDとする。各コミットには課題への言及(およそのITSにはそういう機能がある)を含める。

• 必ず最新のdevelopブランチからfeatureブランチを作成する。

• リリースが決まったら、releaseブランチを最新のdevelopブランチから作成する。名前はrelease/whatever-you-likeとする。

• releaseブランチに必要なfeatureブランチをマージしていく。競合が発生した場合は、releaseブランチ上で解決する。

• マージする際は常にマージコミットを作成する。fast-forwardは行わない(他者から見て分かりづらいため)

• releaseブランチが完了したらdevelopブランチからマージする。競合が発生した場合はdevelopブランチ上で解決する。

• developブランチはステージング環境相当であるため、この時点で確認は行われている。確認して問題なければ、商用環境にリリースする。

• masterブランチにreleaseタグをつける。

Page 7: GFLS入門 - GitFlowっぽいアレ-

よくある質問

Page 8: GFLS入門 - GitFlowっぽいアレ-

Q.やっぱりいらない

develop

feature

release

ロゴの差し替え

タブの追加

2015/03/12公開分

このマージはいらない

Page 9: GFLS入門 - GitFlowっぽいアレ-

A. コミット取り消し

git reset - -hard でブランチを戻してマージしなおすか……

REVERT

git revert commit_id で取り消し用コミットを作成する

Page 10: GFLS入門 - GitFlowっぽいアレ-

Q. 商用が真っ白にmaster

develop

feature

release

ここで問題!ヤベエェェ!

Page 11: GFLS入門 - GitFlowっぽいアレ-

A. hotfixで治すmaster

develop

hotfix developへのマージを忘れると、masterとの差分が発生してしまう。

商用環境自体はmasterブランチを

一個戻せば治る。

Page 12: GFLS入門 - GitFlowっぽいアレ-

Q.一部だけ必要に

develop

feature/hoge

BのJSがないと開発が…

feature/fuga

A B C

Page 13: GFLS入門 - GitFlowっぽいアレ-

A. Cherry Pickdevelop

feature/hoge

feature/fuga

ただし、適切な粒度で開発され、細かくコミットされていることが条件。多くの場合、こんなに上手くいかない。

Aのコミットの差分は来ない

A B C

Page 14: GFLS入門 - GitFlowっぽいアレ-

Q. 放置したfeature

develop

release

feature

ずっと前に作ったのだが、たくさんの新機能がすでにリリースされてしまった……

Page 15: GFLS入門 - GitFlowっぽいアレ-

A. developをマージ

develop

release

feature

追いついた!

Page 16: GFLS入門 - GitFlowっぽいアレ-

Q. テストサーバは?master

develop

test

Page 17: GFLS入門 - GitFlowっぽいアレ-

A. testブランチ作る

試したいfeatureブランチを集めたtestブランチを

都度作成する。いらなくなったら消す。

テストサーバにデプロイ

Page 18: GFLS入門 - GitFlowっぽいアレ-

Q. GithubFlowがよくね?

Page 19: GFLS入門 - GitFlowっぽいアレ-

A. Github使うならYes

• Githubを業務に使ってない会社もあり、プルリクができない。

• コードレビューの体制がない場合もある。

• テストコード? なにそれ? という場所も多い。

Page 20: GFLS入門 - GitFlowっぽいアレ-

終わりすてきなGitライフを!