🎓

IntelliJでGitのautosquashを使う

2024/03/01に公開

結論

git config rebase.autosquash true
このコマンドでIntelliJのInteractively Rebase from Here...でほぼ自動でfixupされます。

解説

IntelliJではGitのfixupを行うコマンドはあるのですが、fixupをまとめるコマンドは用意されていません。

FixupはGitのツリーウィンドウ上でコンテキストメニューにある Fixup... から行います。
この際、ツリーウィンドウ上で選ぶコミットは、fixupしたときに入るコミットです。

https://pleiades.io/help/idea/edit-project-history.html#amend-any-commit

このfixupをまとめるためのGitコマンドはgit rebase --autosquashとなります。

対話型リベースを実行してプロジェクト履歴を編集する

つまりIntelliJにはこのコマンドに対応するメニューなどからのコマンドが用意されていません。
唯一あるのは Interactively Rebase from Here... です。
これは対話型リベースを行うためのダイアログを使ってRebaseを行える機能です。
起動するとローカルのfixupの紐付けは無視され、フラットなログが表示されます。
これではfixupが意味を成しません。
JetBrainsのYouTrack上ではこの挙動を直してほしいと要望は出ているようです。
しかしこの挙動は「Gitの設定に依存しているため、設定を変更すれば対話型でほぼ自動でfixupの紐付けが行われる」旨をJetBrainsのサポートが返していました。

https://youtrack.jetbrains.com/issue/IDEA-209497/Interactive-rebase-does-not-respect-fixup-and-squash-commits-out-of-the-box.#focus=Comments-27-4546151.0-0

というわけで、冒頭のautosquashを常時ONにすることでIntelliJでFixupが完結できるようになります。

Discussion