コミット履歴を変更したmasterブランチに対してリベースしたい
以下のようなブランチで作業しています。
bugfix1
ブランチでの作業が終わったので、master
ブランチに取り込みます。
ただ、bugfix1
のコミットはmaster
ブランチの先頭コミットと1つにまとめたいです。
しかし良い方法が思いつかず、以下のような無駄の多いであろう手順で行いました。
特にmasterブランチを一度削除している部分は「なんか違う」と感じます。
もっと短い手順で行う方法はありますでしょうか?
現在の状態は以下の通りとします。
git log --oneline --graph --all --decorate
* 557ceac (HEAD -> bugfix1) C4
* 4c8dea5 (develop) C3
* fb1dc6b (master) C2
* 65947d3 C1
* e91df3b C0
手順1. C4の分岐元をC2に変更します。
git rebase --onto master develop bugfix1
* db81c6c (HEAD -> bugfix1) C4
| * 4c8dea5 (develop) C3
|/
* fb1dc6b (master) C2
* 65947d3 C1
* e91df3b C0
手順2. C3の分岐元をC4に変更します。
git rebase bugfix1 develop
* 2dd4032 (HEAD -> develop) C3
* db81c6c (bugfix1) C4
* fb1dc6b (master) C2
* 65947d3 C1
* e91df3b C0
手順3. masterブランチとbugfix1ブランチを削除します。
git branch -d master
git branch -d bugfix1
* 2dd4032 (HEAD -> develop) C3
* db81c6c C4
* fb1dc6b C2
* 65947d3 C1
* e91df3b C0
手順4. C2とC4を1つのコミットにまとめます。
git rebase -i HEAD~3
(C2をreword、C4をfixup)
* f4bfc56 (HEAD -> develop) C3
* db88da9 C2+C4
* 65947d3 C1
* e91df3b C0
手順5. masterブランチを作ります。
git checkout db88
git branch master
git checkout develop
* f4bfc56 (HEAD -> develop) C3
* db88da9 (master) C2+C4
* 65947d3 C1
* e91df3b C0
追記
素直にやればよいことに気付きました。なにか混乱していたようです…。
git rebase --onto master develop bugfix1
git checkout master
git merge bugfix1
git branch -D bugfix1
git rebase -i HEAD~2
(C4をfixup)
git rebase master develop