以下のようなブランチで作業しています。

画像の説明をここに入力

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