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

2022.05.25
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 - Git の設定

参考資料

おすすめ