開発中にこまめにコミットしていると、プルリクに出す段階で、ひとつのコミットにまとめて、コミットログをシンプルにしたいなーということはよくある。
そんなときは「rebase -i」相当の操作を行えば、コミットをまとめることができる。
ローカルリポジトリのコミットをまとめる方法(基本的にこちらが推奨)
リモートリポジトリのコミットをまとめる方法も後述するが、基本的に他人が見れる状態になったコミットは、まとめると他人に影響を及ぼすためrebaseすべきではないので、コミットをまとめる場合は、こちらの方法が推奨される。
- 前提として、対象の修正はローカルリポジトリへのコミットまでとし、リモートリポジトリへのプッシュは行わない。
- 対象の作業コピー上で、「リベース(ブランチの付け替え)…」を選択。
- 作業ブランチが「develop」だとしたら、上流が「remotes/origin/develop」となっていることを確認して、「強制リベース」にチェックを入れる。
そうすると、未プッシュのコミットが一覧で表示される。 - まとめたいコミット上で右クリックし、「融合(下のコミットと)」を選択し、コミットをまとめる。まとめたいコミットが複数ある場合、都度、融合操作を行う。
- 「リベース開始」をクリック。
- 「コミットメッセージ」欄にまとめたコミットのログが表示されるので、適切な内容にコミットメッセージを編集して、「コミット」をクリック。
- この時点で、ローカルリポジトリにまとめたコミットが反映されるので、必要なタイミングでリモートリポジトリにプッシュする。
リモートリポジトリのコミットをまとめる方法(非推奨)
これをやる場合は、対象のリモートブランチが、基本的に自分専用のブランチで、自分以外の人が参照していない、もしくは、万が一参照していたとしてもコミット改変に対して、他の人が文句を言わないというネゴが取れていることが前提。
- 対象の作業コピー上で、「ログを表示」で、リモートブランチのコミットログを表示。
- まとめたいコミットを複数選択して、右クリックで、「一つのコミットに集約」を選択。
※基本的に隣り合ったコミットしか集約できない模様。 - コミット画面が表示されるので、新しいコミットのメッセージを編集した上で、「コミット」を選択。
- コミットログ画面に戻るので、コミットがまとまっていることを確認する。
コメントを残す