普段開発しているとGitを使ってバージョン管理することが多いと思います。
その時によくローカルブランチを作って、変更をガンガンコミットしていきます。
ある程度実装してリモートブランチにマージする時に、squashしてコミットを一つにまとめるとおもうのですがIntelliJ IDEAでもsquashして一つのコミットに変更することができます。
またAndroidStudioでも当然ですができます。
今回はAndroidStudioでやってみました。
squashのやりかた
例えば以下のような場合です。
コミットメッセージがふざけているのはご容赦ください。
ローカルで作業するにしてもわかりやすいコミットメッセージが好ましいです。
コミットログを操作するため当然ですがローカルブランチで行ってください。
リモートにプッシュしてあるブランチで操作するとおかしくなります。
IntelliJのメニューからVCS -> rebaseを選択します。
すると以下のような画面が表示されます。
今回はdevelopブランチの内容を一つにまとめたいのでbranchにはdevelop
を指定します。
ontoはmaster
を指定します。ontoに指定したブランチが示すコミットの上に変更がコミットされます。説明が難しい・・。
指定したらRebase
をクリックします。
すると対象になるコミット一覧が表示されます。
ここでActionをsquashにしていきます。
さすがIntellJさん、当然のように複数選択に対応してます。
対象となるコミットを選択して右クリックするとポップアップメニューが表示されるので今回はsquashを選択します。
Start Rebaseボタンを押すとコミットメッセージの入力を求められるので入力します。
するとこんな感じでsquashが行われてコミットが一つになりました。
あとはリモートにプッシュするなりマージするなりすると良いです。
まとめ
もちろんgitコマンドでもできるのですが、自分はIntelliJを使ったほうが楽なので最近はGUIを使っています。
GitKrakenは更に簡単でGUIのヒストリー上からコミットを選択してsquashできたような気がします。
なおSourceTreeでsquashするやり方が未だにわからないです・・・。