##概要
コミットした後にミスに気付いて修正、それが何回も続くことがある。
最初のコミットは修正部分だが、それより後は微修正。それで4コミットも5コミットも表示されると肩身が狭い。
コミットをまとめて履歴をきれいにしよう。
ローカルの場合(SourceTreeを使う)
3つまとめる場合には、最新のコミットから4つ目のコミットを選択状態にし、右クリックから「(4つ前のコミットハッシュ)の子を対話形式でリベース」を選択。
一番上のコミットを選択し、「過去を含めて squash する」 をクリック、を まとめるコミット数 - 1
回繰り返す。
最後に「メッセージを編集」をクリックしてまとめたあとのメッセージを設定する。
上記リンク先では「メッセージを編集」を先にしているが、コミットメッセージに「(+2 squashed commits)」とか付くので、付かない方が良い場合には最後にしよう。
「OK」をクリックするとコミットがまとまります。
リモートの場合(Gitコマンド)
すでにリモートにプッシュしたコミットの場合は、コマンドラインを使うのが良いようだ。
まとめたいコミットがあるブランチに移動して、
$ git rebase -i HEAD~3
上記のrebaseコマンドを使う。最後の「3」はまとめるコミット数。
(※3つのコミットが1つのコミットにまとまる、という意味。減るコミットは2つ。)
コミット一覧が表示されるので、一番上の行以外の「pick」を「s」(squashの略)に修正
「:wq!」で抜けると、次にメッセージの編集画面になる。
メッセージを編集してさらに「wq!」
最後に
$ git push origin +{ブランチ名}