Gitのブランチ統合
merge
rebase
以上の二通りがある
Gitホスティングでのプルリクエストではなんかのオプションがある
Create a merge commit→not fast-forward
Rebase and merge→rebaseしてfast-forwardなのでコミット残る
Squash and merge→コミットを一つにまとめ(スカッシュ)てからfast-forwardマージ
merge
fast-forward(早送り)マージ
hiroki.icon常にこれができるわけではない
マージする先のブランチが以前がから変更されていない場合だけできる
ヘッドを単に先端まで移動するだけだね
https://gyazo.com/b2b1b81cf93c44c2484f01c6cc131143
https://gyazo.com/b75b9e8960d85efb7e1b9accff3c9755
not fast-forward
hiroki.icon複数人で開発しているとだいたいこれになるよね
統合する先のブランチが以前から変更して進んでいる場合
新しくマージコミット(全ての変更分が一個に凝縮された)が作成される→開発時点でのコミットの一つ一つは消滅する
https://gyazo.com/92ed4081d2a2449c8ae05ddf6b7b1ea9
https://gyazo.com/e3cbfbfd277e3283e1c61f923613e01b
rebase
分岐したコミットの枝を統合先ブランチの先端からつなぎ直す(リベース=ベースを変更する)
rebase→fast-forwardマージ
コミットが綺麗に一列に並ぶ
https://gyazo.com/aac24c991beddce0fb208c389b90c271
https://gyazo.com/f31bb2fb95fddfec57088fc0948e2521
$ git rebase --onto どこへ どこから どのブランチを
$ git rebase --onto develop master feature/hoge
あるブランチがどこから生えているかを変更できる
例: (まちがって master から切ってしまった feature/hoge ブランチを develop に移動する)
あるブランチ(staging , masterとか)の先にくっつけ直したいとかの場合は↓
自分は作業先ブランチにcheckoutして
$ git rebase master