git config コマンドは、Git の設定ファイルにアクセスしてユーザー情報、エディタ、差分ツール、エイリアスなどの設定を読み書きするためのコマンドです。
設定は ローカル(リポジトリ単位)、グローバル(ユーザー単位)、システム全体 のいずれかのスコープで適用できます。
この記事では、設定の確認・変更・削除のコマンドを用途別に整理し、--list / --get / --unset / --show-origin の実行例、OSごとの設定ファイルの場所、よくある設定ミスの見分け方までを実践的に解説します。
構文(Syntax)
git config [オプション] <キー> [値]
まず最初に実行する設定例(クイックスタート)
新しいPCでGitを使い始めるときは、まず次の4つを --global で設定しておけば困りません。
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
git config --global init.defaultBranch main
git config --global core.editor "vim"
設定できているか不安なときは、git config --list や git config user.name のように確認したいキーを指定して実行すれば、現在の値をすぐに確認できます(確認方法は後述の「設定一覧を確認する」で詳しく解説します)。
スコープ(–global / –local / –system)の使い分け
git config には 3つのスコープ(適用範囲)があります。どのスコープで設定するかによって、影響する範囲と保存先のファイルが変わります。
| スコープ | オプション | 保存先ファイル | 影響範囲 |
|---|---|---|---|
| ローカル | --local(デフォルト) | .git/config | そのリポジトリのみ |
| グローバル | --global | ~/.gitconfig | そのユーザーの全リポジトリ |
| システム | --system | /etc/gitconfig | マシン上の全ユーザー |
設定の優先順位は ローカル > グローバル > システム の順です。ローカルに設定があればそちらが優先されます。
設定ファイルの場所(OS別)
各スコープの設定は、OSによって保存先パスが異なります。「編集したのに反映されない」ときは、まず自分の環境でどのファイルが読まれているか確認しましょう。
| スコープ | Linux / macOS | Windows |
|---|---|---|
| ローカル | <リポジトリ>/.git/config | <リポジトリ>\.git\config |
| グローバル | ~/.gitconfig(XDG準拠環境では ~/.config/git/config) | C:\Users\<ユーザー名>\.gitconfig |
| システム | /etc/gitconfig | C:\Program Files\Git\mingw64\etc\gitconfig(インストール方法により異なる) |
実際にどのファイルから値が読み込まれているかは、次のコマンドで確認できます。
git config --list --show-origin
–global(グローバル設定)を使うべきケース
名前・メールアドレスなど、どのリポジトリでも共通して使う設定はグローバルに設定します。新しいPCのセットアップ時には最初に実行しましょう。
# 最初にやるべき設定(全リポジトリ共通)
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
git config --global core.editor "vim"
git config --global init.defaultBranch main
–local(ローカル設定)を使うべきケース
仕事用と個人用で別のメールを使い分けたい場合など、リポジトリごとに設定を変えたいときはローカルに設定します。--local はオプション省略時のデフォルトです。
# 仕事用リポジトリだけ会社のメールを使う
cd /path/to/work-repo
git config --local user.email "you@company.com"
# 設定確認(このリポジトリの設定だけ表示)
git config --local --list
–system(システム設定)を使うべきケース
マシン上の全ユーザーに共通させたい設定はシステムスコープで行います。管理者権限(sudo)が必要です。開発チームが共有するサーバーや CI 環境での一括設定に向いています。
# システム全体のデフォルトエディタを設定(管理者権限が必要)
sudo git config --system core.editor "vim"
# プロキシ環境での HTTP 設定(全ユーザー共通)
sudo git config --system http.proxy http://proxy.company.com:8080
# システム設定の確認
git config --system --list
よく使われる設定コマンド一覧
Git を快適に使うために覚えておくべき設定をまとめました。すべて --global で設定する例を示しています。
ユーザー情報(必須設定)
# コミットに記録される名前とメールアドレス
git config --global user.name "Alice"
git config --global user.email "alice@example.com"
デフォルトエディタを設定
# vim を使う場合
git config --global core.editor "vim"
# VS Code を使う場合
git config --global core.editor "code --wait"
# nano を使う場合
git config --global core.editor "nano"
エイリアスを登録する
長いコマンドを短縮形で呼び出せるようにします。よく使うコマンドを登録しておくと作業効率が上がります。
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.lg "log --oneline --graph --decorate"
# 使い方
git st # git status と同じ
git lg # ツリー形式でログ表示
デフォルトブランチ名を設定する
git init で作成されるデフォルトブランチ名を main に変更します(Git 2.28 以降)。
git config --global init.defaultBranch main
push のデフォルト動作を設定する
git push だけで現在のブランチを同名のリモートブランチに push するように設定します。
git config --global push.default current
pull のデフォルト動作を設定する
git pull 時に rebase を使うよう設定します(merge コミットを残さずに履歴をきれいに保てます)。
git config --global pull.rebase true
認証情報を保存する(credential.helper)
HTTPS 接続時にユーザー名・パスワードを毎回入力しなくて済むように設定します。
# macOS(キーチェーンに保存)
git config --global credential.helper osxkeychain
# Windows(資格情報マネージャーに保存)
git config --global credential.helper manager
# Linux(一定時間メモリに保持、デフォルト15分)
git config --global credential.helper cache
git config --global credential.helper "cache --timeout=3600"
# ファイルに保存(平文保存のため注意が必要)
git config --global credential.helper store
改行コードの自動変換(core.autocrlf)
Windows と macOS/Linux が混在するプロジェクトで、改行コード(CRLF/LF)による差分が出るのを防ぎます。
# Windows:チェックアウト時に CRLF に変換、コミット時に LF に戻す
git config --global core.autocrlf true
# macOS / Linux:コミット時に CRLF → LF に変換(チェックアウトは変換しない)
git config --global core.autocrlf input
# 変換しない(改行コードをそのまま保持)
git config --global core.autocrlf false
出力の色付け(color.ui)
git status や git diff の出力に色を付けます。最近の Git ではデフォルトで有効ですが、明示的に設定しておくと安心です。
# 色付け有効(ターミナルが対応している場合のみ)
git config --global color.ui auto
# 常に色付け(パイプ経由でも)
git config --global color.ui always
# 色付け無効
git config --global color.ui false
日本語ファイル名の文字化けを防ぐ
git status や git log で日本語ファイル名がエスケープされて表示される問題を解消します。
git config --global core.quotepath false
差分ツール・マージツールを設定する
# 差分ツールを設定(vimdiff, vscode, meld 等)
git config --global diff.tool vimdiff
git config --global diff.tool vscode
# マージツールを設定
git config --global merge.tool vimdiff
# VS Code をマージツールに設定
git config --global merge.tool vscode
git config --global mergetool.vscode.cmd "code --wait $MERGED"
主なオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
--local | カレントリポジトリにのみ適用(デフォルト) | git config --local user.name "Alice" |
--global | ユーザー全体に適用(~/.gitconfig) | git config --global user.email "alice@example.com" |
--system | システム全体に適用(管理者権限必要) | sudo git config --system core.editor vim |
--list | 現在の設定一覧を表示 | git config --list |
--get <キー> | 特定の設定値を取得 | git config --get user.name |
--unset <キー> | 設定を削除 | git config --unset user.name |
-e | 設定ファイルをエディタで開く | git config -e --global |
--show-origin | 設定の出所(ファイルパス)を表示 | git config --list --show-origin |
実行例
ユーザー名とメールアドレスを設定(グローバル)
git config --global user.name "Alice"
git config --global user.email "alice@example.com"
設定一覧を確認する
# 全スコープを合算して確認(実際に有効な値)
git config --list
# グローバル設定のみ確認
git config --global --list
# ローカル設定のみ確認
git config --local --list
# 設定値とそのファイルの出所を確認
git config --list --show-origin
出力例(git config --list):
user.name=Alice
user.email=alice@example.com
core.editor=vim
alias.st=status
alias.lg=log --oneline --graph --decorate
特定の設定を取得する
git config --get user.email
# 出力: alice@example.com
# どのスコープの設定が有効か確認
git config user.email
設定を削除する
# グローバル設定から削除
git config --global --unset user.email
# ローカル設定から削除
git config --local --unset user.email
設定ファイルを直接編集する
# グローバル設定ファイルをエディタで開く
git config -e --global
# ローカル設定ファイルをエディタで開く
git config -e --local
設定ファイルの直接編集(~/.gitconfig の例)
git config --global で設定した内容は ~/.gitconfig に保存されます。直接編集することもできます。
[user]
name = Alice
email = alice@example.com
[core]
editor = vim
quotepath = false
autocrlf = input
[alias]
st = status
co = checkout
br = branch
lg = log --oneline --graph --decorate
[init]
defaultBranch = main
[push]
default = current
[pull]
rebase = true
[color]
ui = auto
[credential]
helper = cache --timeout=3600
よくある設定ミスと確認方法
user.name / user.email が未設定でコミットできない
fatal: unable to auto-detect email address のようなエラーが出た場合は、グローバル設定が未登録です。git config --global user.name と git config --global user.email を実行し、値が空でないか確認してください。空であれば本記事冒頭の「まず最初に実行する設定例」のとおり設定します。
設定したはずの値が反映されない(スコープの優先順位の誤解)
~/.gitconfig(グローバル)を書き換えたのに反映されない場合、そのリポジトリの .git/config(ローカル)に同じキーが既に設定されていることがあります。ローカル > グローバル > システム の優先順位を思い出し、--show-origin でどのファイルの値が有効になっているかを確認しましょう。
git config --show-origin user.email
同じキーが複数登録されて意図しない値が使われる
同じキーを複数回設定すると、値が重複して残ることがあります。--get-all ですべての値を、--unset-all で重複分をまとめて削除できます。
# 重複を含めてすべて確認
git config --get-all user.name
# 同じキーの設定をすべて削除
git config --global --unset-all user.name
GUIツール(VS Code / SourceTree等)が設定を上書きしている
GUIクライアントは内部的に git config を呼び出し、意図せずローカルスコープに値を書き込むことがあります。git config --list --show-origin を実行し、想定と違うファイルから値が読まれていないか確認してください。
改行コード設定(core.autocrlf)の設定ミスによる差分
Windows参加者だけ core.autocrlf true、macOS/Linux参加者だけ input のように環境ごとに正しい値を設定しないと、改行コード(CRLF/LF)だけの差分が大量に発生します。git config --get core.autocrlf で現在の設定を確認しましょう。
関連コマンド
git init: 新しいリポジトリを作成。init.defaultBranchの設定が使われる。git clone: リポジトリを複製。git commit: コミットを作成。user.name/user.emailの設定が記録される。git push: リモートに変更を送信。push.defaultの設定が使われる。git pull: リモートの変更を取得。pull.rebaseの設定が使われる。git log: コミット履歴を表示。alias.lgでカスタマイズできる。git diff: 変更内容を比較。diff.toolで外部ツールを指定できる。git status: リポジトリの状態を確認。color.uiで表示を色付けできる。git branch: ブランチを管理。git stash: 作業中の変更を一時退避。- Git Bash(Bash) : Windows 環境で Git を使う場合に使用するシェル。
- Gitとは?初心者向け完全ガイド : Git の基本操作を総合的に解説。
備考
- 優先順位は local > global > system の順に適用されます。
git configで設定した内容は.git/config(ローカル)、~/.gitconfig(グローバル)、/etc/gitconfig(システム)に保存されます。- プロジェクトごとに異なるユーザー情報を使う場合は
--localを利用すると便利です。 --show-originオプションを使うと、どのファイルから設定が読み込まれているか確認できます。- 詳細な確認はこちら:【保存版】git config の確認方法まとめ|スコープ・コマンド・設定ファイルを完全解説
参考
- Git公式ドキュメント: https://git-scm.com/docs/git-config

コメント