LINEで現役エンジニアに直接質問してみよう!登録無料

【git入門基礎】git configとは?設定を確認・変更する方法を解説

アキ

独学でプログラミングを勉強しながらWeb制作会社で働き、プログラミングのエンジニア講師も勤めた経験がある、アキです。

  • git configって何?
  • 設定方法を知りたい
  • どういう時に使うの?
  • 使いこなせると、どのくらい便利になるんだろう?

このような疑問に答えていきます。

git configとは?

git configとは、gitの設定を確認・変更するためのコマンドです。

gitの設定とは、

  • commit時のemailアドレス
  • commit時の名前
  • git mergeするツール(アルゴリズム)の選択
  • git commitなどで使用するエディタの選択
  • ターミナル出力時の色分け
  • git pull、git clone時などに使うプロキシの設定
  • gitコマンドのエイアリス(alias)の設定

など、多岐にわたります。

git configの設定は3段階に分かれている

gitの設定は複数の場所で管理されます。その理由は、特定のリポジトリのみに適用したい場合や、システム全体にデフォルト値として設定したい場合に対応するためです。

システム全体(system)、ユーザー全体(global)、対象リポジトリ(local)の3段階に分かれ、よりスコープが狭く、最後に読み込まれた設定で上書きされるようになっています。

種類設定範囲設定ファイルの場所
systemシステム全体/etc/gitconfig
globalユーザーの全リポジトリ~/.gitconfig
local該当リポジトリ<repo>/.git/config
MEMO

設定ファイルを直接編集する事はほとんどしません。通常はコマンドラインから設定を変更します。

git configで主に設定する項目

コミットするユーザー

コミットするユーザー名を選択します。

$ git config --global user.name "hogehoge name"

コミットするメールアドレス

コミットするメールアドレスを設定します。

$ git config --global user.email "[email protected]"

エディター

git commitなどで使うエディタを設定することが出来ます。デフォルトでnanoが設定されていますが、vimなどなれたエディタを使いたいときは、そのように変更することが出来ます。

日本語入力出来るように、utf8で起動するように設定します。

$ git config --global core.editor 'vim -c "set fenc=utf-8"'

diffツール

同じファイルが編集し、コンフリクトを起こした時の解決に使うツールを選択することが出来ます。 標準ではdiffが使われますが、kdiff3tkdiffmeldxxdiffemergevimdiffgvimdiffecmergeopendiffなどを使うことが出来ます。

$ git config --global merge.tool vimdiff

ターミナル出力の色分け

$ git config --global color.diff auto
$ git config --global color.status auto
$ git config --global color.branch auto

git statusとかで日本語がエスケースされるのを防ぐ

$ git config --global core.quotepath false

gitでプロキシを設定する

gitでは、接続する時のプロキシを設定することが出来ます。システム内のすべてのリポジトリでプロキシで設定したり、特定のリポジトリにのみ適用することも出来ます。

すべてのリポジトリにプロキシを設定する

プロキシは、「http/https」それぞれで設定する必要があります。

構文:

$ git config --global http.proxy http://[proxy domain]:[port]
$ git config --global https.proxy https://[proxy domain]:[port]

例:

$ git config --global http.proxy http://example.com:8080
$ git config --global https.proxy http://example.com:8080

特定の接続先のみプロキシを適用する

この設定だと、すべての接続をプロキシ経由するようになってしまいます。 プロジェクトによっては、一部の接続先のみプロキシを有効にしたい場合もあるかと思います。

特定の接続先にのみプロキシを有効にするには下記のような構文を使います。

構文:

$ git config --global http.[URL].proxy http://[proxy domain]:[port]
$ git config --global https.[URL].proxy https://[proxy domain]:[port]

例:

$ git config --global http.[URL].proxy http://example.com:8080
$ git config --global https.[URL].proxy https://example.com:8080

git configはaliasを使ってこそ、真価を発揮する

git configには、aliasという機能があります。簡単な具体例を上げると「git push」の他に「git p」でも同じように動作させるようにすることができます。

わかっています。これでは、それほど便利には感じないのでは?では、これではどうですか?

$ git log --graph --oneline --decorate=full -20 --date=short --format="%C(yellow)%h%C(reset) %C(magenta)[%ad]%C(reset)%C(auto)%d%C(reset) %s %C(cyan)@%an%C(reset)"

これは、gitのコミット履歴がブランチでどこで分岐されどこで誰がマージしたのかをわかりやすく表示できるコマンドです。これを「git logtree」で動くようにしてみます。

$ git config --global alias.logtree 'log --graph --oneline --decorate=full -20 --date=short --format="%C(yellow)%h%C(reset) %C(magenta)[%ad]%C(reset)%C(auto)%d%C(reset) %s %C(cyan)@%an%C(reset)"'

これを実行すると、

$ git logtree

このように、どこでマージされたかが見やすくなります。

この記事を書いた人

自身がプログラミングを独学で勉強し始めて躓いた経験を元に、これから勉強をする人に向けに「イラスト多めでわかりやすい記事」にこだわって情報を発信しています。

現在はフルスタックエンジニアとしてサービス開発などのお仕事をしています。