M
master
本番
=
課題Aのために、ブランチAを作る
Make branch A
branch A
A
課題Aのコミットを作成
commit A
commit A
課題Bのために、ブランチBを作り
Make branch B
branch B
B
課題Bのコミットを作成
commit B
commit B
A
課題Aの開発が完了し
本番へアップする
ブランチAを
masterへ
マージする
=
A
マージすると
masterに
commitAが
記録される
A
MA
master
masterが進む
master
NGパターン
MA
B
このときBはこういう状態
MA
B
A
Aのコミットを取り入れるために…
MA
BA
ブランチA
にリベース
MA
BA
MA
BA
ブランチBの中に
AとBの内容が
入っている
ブランチBの修正として
コミットAが
記録されてしまっている
=
↑これがNG
MA
BA
M
このままマージ
すると・・・
MA
BA
MA B
MA
BA
MA B
Aが二つになる
masterの中に
Aが二つになる
OKパターン
MA
B
このときBはこういう状態
MA
B
A
Aはすでにmasterに
マージされているので
MA
B
A
masterに
リベースする
B
MA
B
A
こうすると、
起点のmasterに
すでにAが
含まれている
MA
B
A
ブランチBの中に
コミットAは
記録されていない
ブランチBの修正に
コミットAが含まれているが、
ブランチBの
範囲
MA
B
A
M
ブランチBを
masterへ
マージする
MA
B
A
M
ブランチBを
masterへ
マージする
B
MA
A
MB
B
masterが進む
A MB
AとBが
正しくマージされる
では、AとBとCがあって・・・
C
B
A
アップしたいときは?
1. Aだけ先にアップ
2. BとCをその後で一緒に
(ぜひ考えてみてください)
いろいろやり方はありますが、
まずはAをアップ
C
B
A
C
B
A
M
C
B
MA
つぎに、BとCの
アップの準備
C
B
MA
C
B
MA
BとCをそれぞれ
リベースする
C
B
MA
C
B
MA
C
B
masterに
一つずつマージ
MA
C
B
M
MA
C
MB
MA
C
MB
MA
C
MB M
MA
C
MB M
MA
C
MB
MA
C
MB
C
MA MB
C
M
MA MB
C
M
でも、これでは
BとCのアップが面倒…
そういうときに
使うのが
リリースブランチ
C
B
MA
C
B
MA
masterから
リリースブランチを
作成
C
B
MA
BとCを
リリースブランチに
マージ
C
B
MA
R
C
MA
R R
C
MA
R R
リリースブランチに
マージする時に
conflictしたら
ソースを見て解消する
MA
R R
リリースブランチが
正しく作れたら
masterにマージ
MA
R R
M
MA
R R
MR R
MA MR R
ブランチBの
内容
ブランチCの
内容
今日はここまで!
お疲れ様でした

ブランチを綺麗に保ち、どうやって本番アップするのか