🎓
IntelliJでGitのautosquashを使う
結論
git config rebase.autosquash true
このコマンドでIntelliJのInteractively Rebase from Here...
でほぼ自動でfixupされます。
解説
IntelliJではGitのfixupを行うコマンドはあるのですが、fixupをまとめるコマンドは用意されていません。
FixupはGitのツリーウィンドウ上でコンテキストメニューにある Fixup...
から行います。
この際、ツリーウィンドウ上で選ぶコミットは、fixupしたときに入るコミットです。
このfixupをまとめるためのGitコマンドはgit rebase --autosquash
となります。
つまりIntelliJにはこのコマンドに対応するメニューなどからのコマンドが用意されていません。
唯一あるのは Interactively Rebase from Here...
です。
これは対話型リベースを行うためのダイアログを使ってRebaseを行える機能です。
起動するとローカルのfixupの紐付けは無視され、フラットなログが表示されます。
これではfixupが意味を成しません。
JetBrainsのYouTrack上ではこの挙動を直してほしいと要望は出ているようです。
しかしこの挙動は「Gitの設定に依存しているため、設定を変更すれば対話型でほぼ自動でfixupの紐付けが行われる」旨をJetBrainsのサポートが返していました。
というわけで、冒頭のautosquashを常時ONにすることでIntelliJでFixupが完結できるようになります。
Discussion