Gitの操作に慣れてくるとrebaseは欠かせないコマンドになってきます。
その中でもsquash・fixupはコミット同士をくっつける事が出来るため、
コミットの修正を行う際など、かゆいところに手が届く非常に便利なコマンドです。
今回ご紹介する autosquashを設定を追加する事で、
rebase時のsquash・fixup操作を更に速くする事が出来ます!
検証した環境
| 1 | git | 2.32.0 |
autosquashについて
autosquashを設定するとどうなるか?というと
rebase時にコミットの並び順が自動で変わり、簡単にsquash・fixupが出来る
ようになります!
最初聞くと「??」になると思うので、画像でお伝えをすると、
まず2つコミットがあり、
その後にコミットタイトルの頭に「fixup!」と付けたコミットをします。
この時に「fixup! 並び替えを行いたいコミットのタイトル」となるようにコミットタイトルを付けます
この状態でgit rebase 4534040を行います。
autosquash=falseの場合
autosquash=trueの場合
このように autosquash=trueの場合rebase時に自動的に「fixup!」が付いたコミットの並び順が替わります!
並び替わる際のルールは
「fixup!」の後に付けたコミットタイトルのコミットの後ろに自動的に移動します。
fixup!・squash!を付けたコミットをする
fixup!を付けたコミットはいちいち自分でコミットタイトルを作らずとも、
コマンドで作る事が出来ます。
# コミット番号で指定
$ git commit --fixup=625b5b8
# HEAD^^のように指定する事も可能
$ git commit --fixup=HEAD^どちらのパターンでも先程のような「fixup! 並び替えを行いたいコミットのタイトル」というコミットが行われます。
squashも同様
# コミット番号で指定
$ git commit --squash=625b5b8
# HEAD^^のように指定する事も可能
$ git commit --squash=HEAD^autosquashを設定する
肝心のautosquashの設定方法は、gitコマンド もしくはgitconfigに記載をします。
$ git config --global rebase.autosquash true~/.gitconfig
[rebase]
autosquash = true