rebase時にsquash・fixupを素早く実行出来る!autosquashの設定

投稿日
rebase時にsquash・fixupを素早く実行出来る!autosquashの設定

Gitの操作に慣れてくるとrebaseは欠かせないコマンドになってきます。



その中でもsquashfixupはコミット同士をくっつける事が出来るため、

コミットの修正を行う際など、かゆいところに手が届く非常に便利なコマンドです。




今回ご紹介する autosquashを設定を追加する事で、
rebase時のsquash・fixup操作を更に速く
する事が出来ます!

検証した環境

1 git 2.32.0

autosquashについて

autosquashを設定するとどうなるか?というと

rebase時にコミットの並び順が自動で変わり、簡単にsquash・fixupが出来る

ようになります!




最初聞くと「??」になると思うので、画像でお伝えをすると、



まず2つコミットがあり、

2つコミットがある状態


その後にコミットタイトルの頭に「fixup!」と付けたコミットをします。

この時に「fixup! 並び替えを行いたいコミットのタイトル」となるようにコミットタイトルを付けます

fixup!を付けたコミット



この状態でgit rebase 4534040を行います。



autosquash=falseの場合

autosquashがfalseの場合

autosquash=trueの場合

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
プロフィール画像
Yuki Takara
都内でフリーランスのエンジニアをやってます。フロントとアプリ開発メインに幅広くやってます。