git config – 設定の確認・変更・削除とスコープを管理するコマンド

コマンドリファレンス

git config コマンドは、Git の設定ファイルにアクセスしてユーザー情報、エディタ、差分ツール、エイリアスなどの設定を読み書きするためのコマンドです。
設定は ローカル(リポジトリ単位)グローバル(ユーザー単位)システム全体 のいずれかのスコープで適用できます。

この記事では、設定の確認・変更・削除のコマンドを用途別に整理し、--list / --get / --unset / --show-origin の実行例、OSごとの設定ファイルの場所、よくある設定ミスの見分け方までを実践的に解説します。

  1. 構文(Syntax)
    1. まず最初に実行する設定例(クイックスタート)
  2. スコープ(–global / –local / –system)の使い分け
    1. 設定ファイルの場所(OS別)
    2. –global(グローバル設定)を使うべきケース
    3. –local(ローカル設定)を使うべきケース
    4. –system(システム設定)を使うべきケース
  3. よく使われる設定コマンド一覧
    1. ユーザー情報(必須設定)
    2. デフォルトエディタを設定
    3. エイリアスを登録する
    4. デフォルトブランチ名を設定する
    5. push のデフォルト動作を設定する
    6. pull のデフォルト動作を設定する
    7. 認証情報を保存する(credential.helper)
    8. 改行コードの自動変換(core.autocrlf)
    9. 出力の色付け(color.ui)
    10. 日本語ファイル名の文字化けを防ぐ
    11. 差分ツール・マージツールを設定する
  4. 主なオプション一覧
  5. 実行例
    1. ユーザー名とメールアドレスを設定(グローバル)
    2. 設定一覧を確認する
    3. 特定の設定を取得する
    4. 設定を削除する
    5. 設定ファイルを直接編集する
  6. 設定ファイルの直接編集(~/.gitconfig の例)
  7. よくある設定ミスと確認方法
    1. user.name / user.email が未設定でコミットできない
    2. 設定したはずの値が反映されない(スコープの優先順位の誤解)
    3. 同じキーが複数登録されて意図しない値が使われる
    4. GUIツール(VS Code / SourceTree等)が設定を上書きしている
    5. 改行コード設定(core.autocrlf)の設定ミスによる差分
  8. 関連コマンド
  9. 備考
  10. 参考
  11. 関連記事

構文(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 --listgit config user.name のように確認したいキーを指定して実行すれば、現在の値をすぐに確認できます(確認方法は後述の「設定一覧を確認する」で詳しく解説します)。

スコープ(–global / –local / –system)の使い分け

git config には 3つのスコープ(適用範囲)があります。どのスコープで設定するかによって、影響する範囲と保存先のファイルが変わります。

スコープオプション保存先ファイル影響範囲
ローカル--local(デフォルト).git/configそのリポジトリのみ
グローバル--global~/.gitconfigそのユーザーの全リポジトリ
システム--system/etc/gitconfigマシン上の全ユーザー

設定の優先順位は ローカル > グローバル > システム の順です。ローカルに設定があればそちらが優先されます。

設定ファイルの場所(OS別)

各スコープの設定は、OSによって保存先パスが異なります。「編集したのに反映されない」ときは、まず自分の環境でどのファイルが読まれているか確認しましょう。

スコープLinux / macOSWindows
ローカル<リポジトリ>/.git/config<リポジトリ>\.git\config
グローバル~/.gitconfig(XDG準拠環境では ~/.config/git/configC:\Users\<ユーザー名>\.gitconfig
システム/etc/gitconfigC:\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 statusgit diff の出力に色を付けます。最近の Git ではデフォルトで有効ですが、明示的に設定しておくと安心です。

# 色付け有効(ターミナルが対応している場合のみ)
git config --global color.ui auto

# 常に色付け(パイプ経由でも)
git config --global color.ui always

# 色付け無効
git config --global color.ui false

日本語ファイル名の文字化けを防ぐ

git statusgit 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ユーザー全体に適用(~/.gitconfiggit 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.namegit 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 の確認方法まとめ|スコープ・コマンド・設定ファイルを完全解説

参考

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント