git merge と git rebaseの違い。
masterのHEADはポイントA
(master) ---A
masterのHEADはポイントA
Aからブランチしたworkingを作成し、Bまで進める
(master) ---A
\
(working) \-----B
ここまでだったら (master) git merge working で
workingの変更をmergeできる。
そこからさらに masterでも変更し A'まで進めたとする
(master) ---A -------------A'
\
(working) \-----B
(master) git merge working ではmergeできない
fatal: You have not concluded your merge (MERGE_HEAD exists).
Please, commit your changes before you can merge.
と言われる。
(master) git rebase working する
First, rewinding head to replay your work on top of it...
Applying: commit1
Applying: commit2
するとこうなる
(master) ---A ------A''
\ /
(working) \-----B
コミットA'の存在はmasterからはなくなって、
Bからの続きとして AからA'の差分がマージされて A''になる