Upgrade to Pro — share decks privately, control downloads, hide ads and more …

gitのブランチ戦略

9318744519d282ae40e352e6a1b79b2a?s=47 takashabe
February 26, 2015

 gitのブランチ戦略

社内LT大会で話した資料です。

9318744519d282ae40e352e6a1b79b2a?s=128

takashabe

February 26, 2015
Tweet

Transcript

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

  2. git初心者あるある

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

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

  5. None
  6. ブランチ戦略決めましょう

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

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

  9. git-flow

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

    安定版ブランチ。リリースを終えたreleaseブランチからmasterにマージされる。 hotfix 緊急のバグ修正ブランチ。masterから作成され、releaseブランチを介さずにそのま まmasterにマージされる。
  11. None
  12. feature

  13. release

  14. hotfix

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

  16. github flow

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

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

  20. 弊チームのブランチ戦略

  21. やりたいこと

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

  23. git-flowのアレンジ

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

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

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

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

  28. None
  29. tips

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

    の最新コミットが取り込まれない コンフリクトの原因になる
  31. CUIでやる SourceTreeなど優秀なGUIツールを使うのもいいが、git の構造を知るにはCUIでやると捗る ローカル/リモートリポジトリの違い working copy,index,ローカルリポジトリの違い 慣れるとGUIでやるよりも捗る(と思う)