ロゴテキスト ロゴ

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