【TortoiseGit】複数のコミットをrebaseで一つにまとめる方法

開発中にこまめにコミットしていると、プルリクに出す段階で、ひとつのコミットにまとめて、コミットログをシンプルにしたいなーということはよくある。

そんなときは「rebase -i」相当の操作を行えば、コミットをまとめることができる。

ローカルリポジトリのコミットをまとめる方法(基本的にこちらが推奨)

リモートリポジトリのコミットをまとめる方法も後述するが、基本的に他人が見れる状態になったコミットは、まとめると他人に影響を及ぼすためrebaseすべきではないので、コミットをまとめる場合は、こちらの方法が推奨される。

  1. 前提として、対象の修正はローカルリポジトリへのコミットまでとし、リモートリポジトリへのプッシュは行わない。
  2. 対象の作業コピー上で、「リベース(ブランチの付け替え)…」を選択。
  3. 作業ブランチが「develop」だとしたら、上流が「remotes/origin/develop」となっていることを確認して、「強制リベース」にチェックを入れる。
    そうすると、未プッシュのコミットが一覧で表示される。
  4. まとめたいコミット上で右クリックし、「融合(下のコミットと)」を選択し、コミットをまとめる。まとめたいコミットが複数ある場合、都度、融合操作を行う。
  5. 「リベース開始」をクリック。
  6. 「コミットメッセージ」欄にまとめたコミットのログが表示されるので、適切な内容にコミットメッセージを編集して、「コミット」をクリック。
  7. この時点で、ローカルリポジトリにまとめたコミットが反映されるので、必要なタイミングでリモートリポジトリにプッシュする。

リモートリポジトリのコミットをまとめる方法(非推奨)

これをやる場合は、対象のリモートブランチが、基本的に自分専用のブランチで、自分以外の人が参照していない、もしくは、万が一参照していたとしてもコミット改変に対して、他の人が文句を言わないというネゴが取れていることが前提。

  1. 対象の作業コピー上で、「ログを表示」で、リモートブランチのコミットログを表示。
  2. まとめたいコミットを複数選択して、右クリックで、「一つのコミットに集約」を選択。
    ※基本的に隣り合ったコミットしか集約できない模様。
  3. コミット画面が表示されるので、新しいコミットのメッセージを編集した上で、「コミット」を選択。
  4. コミットログ画面に戻るので、コミットがまとまっていることを確認する。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です