Gitコマンドの設定ファイルのgitconfig
。
設定を自分流にカスタマイズする事で操作性を上げる事が出来ます!
検証した環境
1 | git | 2.32.0 |
gitconfigの設定をする前に
これから記載するgitconfigへの設定の仕方は
- gitコマンドを使う
~/.gitconfig
等、設定ファイルに直接記述
の2通りがあります。
記事の主旨と逸れるので簡単に。
gitコマンドを使う
aliasと同じように設定が出来ます
# git config <設定するレベル> <項目名> <値>
# 以下のコマンドの場合 項目名・・color.ui 値・・auto
$ git config --global color.ui auto
実行すると
[color]
ui = auto
のように設定されます。
「設定するレベル」については下記をご参照下さい
基本的に--global
を使って、必要があれば--local
を使う
というのがgitのconfigの設定として良いかなと思ってます。
設定ファイルに直接記述
vim ~/.gitconfig
等で設定。
設定ファイルいじるのに慣れている人はこちらが速いです!
[color]
ui = auto
gitconfigに追加したい便利設定
fetch.prune true
fetch時に自動で--prune
を実行し、
リモートで削除されたブランチをローカルにも反映(追跡ブランチを自動削除)してくれます
$ git config --global fetch.prune true
[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
[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
[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
を設定すると
- rebaseを実行
- stash出来るファイルがある場合自動でstashを実行
- rebase終了後にstashファイルを戻す
となります。
stashしたファイルを戻してくれるところまでやってくれるのも嬉しいポイント☺️
rebase.autosquash true
こちらも同じく rebase
を良く使う人は絶対入れてほしい便利な設定!
rebase時のfixup・squash作業の補助的なものですが、
慣れると劇的に複数のコミットを合わせる作業が速くなります。
$ git config --global rebase.autosquash true
[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 の設定