※プッシュしてある場合は枝分かれしてしまうため注意。最後のセクションを見てください

・SourceTreeでコミットをまとめる方法ある?
こんな疑問にお答えします。
コミットが多くなりまとめたい場合ありますよね。
例として下記画像のように「テキストを修正しました」「02」「03」等のコミットを、1つにして短くしたいなど。

実はそれSourceTreeなら簡単に可能です。

すぐにできるよ!
ということで、この記事では「SourceTreeで複数コミットを1つにまとめる方法」について解説していきます!
・SourceTreeで複数コミットを1つにまとめる方法
・プッシュしてしまったコミットの場合の対処
目次
【解決】SourceTreeで複数コミットを1つにまとめる【スカッシュ】
※プッシュしてある場合は枝分かれしてしまうため注意。最後のセクションを見てください
実はSourceTreeにて複数のコミットを1つにまとめることができます。
そんな手順がこちら↓
- まとめるコミットの1つ手前を選択
- 「インタラクティブなリベースを行う」をクリック
- 過去を含めてsqushする
- コミットメッセージをまとめたものに変える
順に解説してきます。
まずまとめようと思うコミットの1つ手前を選択します。

今回でいうと「テキスト修正しました〜」の3つのコミットをまとめたいので、その手前の「test01」となります。
そしたら右クリックをします。
すると下記画像のような項目が出るので「〜の子を対話形式でリベース」をクリックしましょう。

※Windowsだと「~の子とインタラクティブなリベースを行う」との文言の可能性があります
すると下記画像のようになるので、一番上のコミットを選択して「過去を含めてsqushする」をクリックします。

こうすることで「テキストを修正しました03」と「テキストを修正しました02」がまとまり下記のようになります。

「過去を含めてsqushする」をクリックすれば、1つ前のコミットと選択したコミットがまとまるということですね。
そのためもう一度「squshする」をクリックすることで、3つのコミットをまとめることができます。
最後にまとまったコミットに対してのメッセージを変更しましょう。
やり方は「過去を含めてsqushする」の左にある「メッセージを修正」をクリックして、出てくる画面の文言を変えれば完了です。

今回は「テキストの修正」としました。これでOKをクリックします。
これで複数コミットをまとめることができました!

【注意】SourceTreeで「プッシュしてある」複数コミットをまとめる場合
プッシュしてある複数コミットをまとめる時は注意が必要です。
というのも同じように修正した場合、下記のように枝分かれしてしまうため。

コミットはまとまってますが、リモートのほうはまとまってないので、枝分かれが起きてしまいます。

リモートとローカルの内容が異なってしまう。
この状態でプッシュしようとすると、エラーが起きてしまいます。

対処法としては「強制プッシュ」をして、枝分かれを1本にすることですね。
ただ複数人で作業していると、整合性がとれなくなったり競合が起きる可能性があるため「非推奨」となっております。
そのためあまりおすすめはしない対処法です。
下記などの状況のみ使う方法とするのが良いですね。
- 自分1人だけのプロジェクト
- メンバー全員がOKしている状況
そんな強制プッシュのやり方は、下記記事にてまとめておりますので参考にどうぞ↓

他にもSourcetreeで使えるものをまとめていますので参考にどうぞ↓

【解決】SourceTreeで複数コミットを1つにまとめる【スカッシュ】:まとめ
- まとめるコミットの1つ手前を選択
- 「インタラクティブなリベースを行う」をクリック
- 過去を含めてsqushする
- コミットメッセージをまとめたものに変える

SourceTreeで複数コミットを1つにまとめたい時はためしてみてね!