ロゴテキスト ロゴ

    Git大好き人間のおすすめgitconfig設定

    Git大好き人間のおすすめgitconfig設定

    Gitコマンドの設定ファイルのgitconfig

    設定を自分流にカスタマイズする事で操作性を上げる事が出来ます!




    gitのalias設定は別記事で書いているため、

    こちらの記事にはaliasに関しては記載していません。


    aliasは上記記事を参考下さい!

    検証した環境

    1 git 2.32.0

    gitconfigの設定をする前に

    これから記載するgitconfigへの設定の仕方は

    • gitコマンドを使う
    • ~/.gitconfig等、設定ファイルに直接記述

    の2通りがあります。

    記事の主旨と逸れるので簡単に。



    gitコマンドを使う

    aliasと同じように設定が出来ます

    # git config <設定するレベル>  <項目名> <値>
    # 以下のコマンドの場合  項目名・・color.ui    値・・auto
    $ git config --global color.ui auto

    実行すると

    ~/.gitconfig
    [color]
          ui = auto

    のように設定されます。



    「設定するレベル」については下記をご参照下さい

    基本的に--globalを使って、必要があれば--localを使う

    というのがgitのconfigの設定として良いかなと思ってます。



    設定ファイルに直接記述

    vim ~/.gitconfig等で設定。

    設定ファイルいじるのに慣れている人はこちらが速いです!

    ~/.gitconfig
    [color]
          ui = auto



    gitconfigに追加したい便利設定

    fetch.prune true

    fetch時に自動で--pruneを実行し、

    リモートで削除されたブランチをローカルにも反映(追跡ブランチを自動削除)してくれます

    $ git config --global fetch.prune true
    ~/.gitconfig
    [fetch]
        prune = true


    デフォルトだとリモートでブランチが削除された後に、

    git fetchをしてローカルの情報を更新しても追跡ブランチが消えた事が反映されません




    そんな時に実行するコマンドが

    $ git fetch --prune

    で、この--pruneオプションを毎回自動で設定するのが以下のコマンドになります。


    $ git config --global fetch.prune true


    pull.ff only

    git pullは意図しないマージコミットを作ってしまう事があり、

    それを回避出来るようにするのがこの設定。



    pullを行った際fast-forward でマージできる状況の場合は merge を、そうでなければ fetch のみ行う ようになります。


    $ git config --global pull.ff only
    ~/.gitconfig
    [pull]
        ff = only


    この設定を行うと


    ↑ で実行している--ff-onlyというオプションが常に付与されるようになり、

    $ git pull --ff-only origin HEAD
    From ssh://github.com/meganedogYuu/pr-sample
     * branch            HEAD       -> FETCH_HEAD
    fatal: Not possible to fast-forward, aborting.
    #fast-forwardが実行出来なかったためmergeをせずfetchのみに

    fast-forwardが実行出来なかった場合はマージコミットを作らずにfetchのみで終わるようになります。




    詳しくは下記記事をご参考下さい



    rebase.autostash true

    rebaseを良く使う人は絶対入れてほしい便利な設定!



    rebase実行時に自動的にstashをしてくれます

    $ git config --global rebase.autostash true
    ~/.gitconfig
    [rebase]
        autostash = true


    デフォルトだと変更があるファイルが存在しているとrebaseを実行できません。

    # 変更を加えたファイルがある
    $ git status -s
     M README.md
     
    $ git rebase master
    error: cannot rebase: You have unstaged changes.
    error: Please commit or stash them. #コミット か スタッシュ してからrebaseして、と怒られる


    rebase.autostash trueを設定すると



    1. rebaseを実行
    2. stash出来るファイルがある場合自動でstashを実行
    3. rebase終了後にstashファイルを戻す

    となります。



    stashしたファイルを戻してくれるところまでやってくれるのも嬉しいポイント☺️





    rebase.autosquash true

    こちらも同じく rebaseを良く使う人は絶対入れてほしい便利な設定!


    rebase時のfixup・squash作業の補助的なものですが、

    慣れると劇的に複数のコミットを合わせる作業が速くなります。

    $ git config --global rebase.autosquash true
    ~/.gitconfig
    [rebase]
        autosquash = true



    color.ui auto

    検証した2.32.0の場合 ui = autoがデフォルトで設定されているので、

    最近のバージョンの場合基本設定しなくてもよいものになります。



    gitコマンドを使用した際に色が付きます。

    [color]
        ui = auto

    最近のgitではデフォルトでui = autoが設定されているので、

    色が付かないなぁと思った人は設定してみて下さい。

    $ git config --global color.ui auto


    色が付いていない場合

    git colorが無効で色が付いていない場合

    色が付いている場合

    git colorが有効で色が付いている場合

    参考: Git - Git の設定

    参考資料
    プロフィールの背景画像 プロフィール画像
    Yuki Takara
    都内でフリーランスのエンジニアをやってます。フロントとアプリ開発メインに幅広くやってます。