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