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 = autogitconfigに追加したい便利設定
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 truepull.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 = truecolor.ui auto
検証した2.32.0の場合 ui = autoがデフォルトで設定されているので、
最近のバージョンの場合基本設定しなくてもよいものになります。
gitコマンドを使用した際に色が付きます。
[color]
ui = auto最近のgitではデフォルトでui = autoが設定されているので、
色が付かないなぁと思った人は設定してみて下さい。
$ git config --global color.ui auto色が付いていない場合
色が付いている場合
参考: Git - Git の設定