git config 確認コマンドの使い方|設定一覧と出どころ

git-config-check 開発環境・インフラ
記事内に広告が含まれています。

「git configで今どんな設定になっているのか分からない」「コミットに意図しない名前やメールアドレスが入っていた」と不安になったことはありませんか。設定の確認コマンドを知っておけば、原因の切り分けは数秒で済みます。この記事では、git configの確認方法を基本から順に、実行結果つきで解説します。

この記事を読んでわかること

  • git config --listなど、設定を確認する基本コマンドの使い方
  • user.name・user.emailの確認と修正の方法
  • globalとlocalのどちらの設定が有効かを見分ける方法
  • .gitconfigファイルの場所(Windows・Mac・Linux別)
  • VSCode・SourceTree・Git Bashでの確認方法
  • 設定の削除方法と、変更が反映されないときのチェックポイント
  • safe.directoryの警告やプロキシ設定など、実務でつまずきやすい項目の確認方法
  1. git config 確認の基本|まず覚えるコマンドと確認できること
    1. git configの3つの設定レベルと優先順位
    2. git config –list で全設定を一覧表示する
    3. -show-origin でどのファイルの設定か確認する
    4. 特定の項目だけ確認する
  2. user.name・user.emailを確認・修正する方法
    1. user.name・user.emailの確認コマンド
    2. global・localどちらの値か確認する
    3. user.name・user.emailを修正する
    4. user.name・user.emailを削除する
    5. 実務での注意点|過去のコミットの著者は変わらない
  3. globalとlocalの設定、どちらが有効か確認する方法
    1. system・global・localの違いと優先順位
    2. 特定の項目がどのレベルで設定されているか調べる
    3. local設定だけを確認する
    4. global設定だけを確認する
    5. 確認の流れ
  4. .gitconfigファイルの場所を確認する方法(Windows/Mac/Linux)
    1. OSごとの設定ファイルの場所
    2. Windowsで.gitconfigを開く
    3. Mac・Linuxで.gitconfigを開く
    4. リポジトリ内の.git/configを確認する
    5. git config –editでエディタから開く
  5. VSCode・SourceTree・Git Bashで設定を確認する方法
    1. VSCodeの統合ターミナルで確認する
    2. SourceTreeのGUIで確認する
    3. Git Bashで確認する
    4. どのツールを選ぶか
  6. git configの設定を削除・変更する方法
    1. 特定の設定だけを削除する(–unset)
    2. セクションごと削除する(–remove-section)
    3. 設定の値を変更する
    4. グローバル設定をすべて初期化する
    5. 設定を変更したのに反映されない場合のチェックリスト
  7. safe.directoryのセキュリティ警告を確認・解決する方法
    1. エラーメッセージの実例
    2. なぜこのエラーが表示されるのか
    3. 現在のsafe.directory設定を確認する
    4. safe.directoryにディレクトリを追加する
    5. 全ディレクトリを許可する(*)とその注意点
    6. safe.directoryの設定を削除する
  8. プロキシ設定・認証情報を確認する方法(実務でよく使う項目)
    1. プロキシ設定(http.proxy)を確認する
    2. credential.helper(認証情報の保存方式)を確認する
    3. チーム開発で確認しておきたい主要項目
  9. よくある質問(FAQ)
  10. まとめ

git config 確認の基本|まず覚えるコマンドと確認できること

設定を確認する基本コマンドはgit config --listです。特定の項目だけならgit config <項目名>で確認できます。Gitの設定は複数のファイルに分かれて保存されているため、まず「どのレベルの設定か」を押さえると迷いません。

git config 確認の基本|まず覚えるコマンドと確認できること

git configの3つの設定レベルと優先順位

Gitの設定は、適用範囲の異なる3つのレベルで管理されます。同じ項目が複数のレベルにある場合は、範囲の狭いものが優先されます。

レベルオプション適用範囲保存場所の例優先順位
system--systemPC内の全ユーザー/etc/gitconfig低
global--globalログイン中の自分のみ~/.gitconfig中
local--localそのリポジトリのみ.git/config高

優先順位は「local > global > system」です。たとえば、globalでuser.name=Taro Yamadaを設定していても、localに別の名前があればそちらが使われます。詳しい確認方法は[関連記事リンク]で解説します。

git config –list で全設定を一覧表示する

現在有効な設定をすべて表示するには、次のコマンドを実行します。-lと短縮しても同じ結果です。

git config --list
user.name=Taro Yamada
user.email=taro@example.com
core.editor=code --wait
core.autocrlf=input
init.defaultbranch=main
core.repositoryformatversion=0
remote.origin.url=https://github.com/taro/sample-site.git

リポジトリ内で実行すると、system・global・localの設定がまとめて表示されます。リポジトリ外ではlocalが含まれません。同じ項目が複数行に出る場合は、下にある行が実際に有効な値です。

-show-origin でどのファイルの設定か確認する

-show-originを付けると、各設定がどのファイルに書かれているかが分かります(Git 1.8.1以降で利用可能)。

git config --list --show-origin
file:/etc/gitconfig	core.autocrlf=input
file:/Users/taro/.gitconfig	user.name=Taro Yamada
file:/Users/taro/.gitconfig	user.email=taro@example.com
file:.git/config	core.repositoryformatversion=0
file:.git/config	remote.origin.url=https://github.com/taro/sample-site.git

左側のパスが設定の出どころです。「想定と違う値が使われている」ときは、このコマンドで原因のファイルを特定できます。Git 2.26以降なら--show-scopeで、system・global・localの区分を直接表示することも可能です。

特定の項目だけ確認する

一覧が長いときは、項目名を指定して値だけを確認します。

git config user.name
git config user.email
Taro Yamada
taro@example.com

未設定の項目を指定した場合は、何も表示されずに終了します。「出力が空=未設定」と判断できます。

まずはgit config --list --show-originで全体を確認し、気になる項目をgit config <項目名>で絞り込む流れを覚えておきましょう。

Git - git-config Documentation
◆◇◆ 【衝撃価格】VPS512MBプラン!1時間1.3円【ConoHa】 ◆◇◆

user.name・user.emailを確認・修正する方法

user.nameとuser.emailはgit config user.nameとgit config user.emailで確認し、git config --global(全リポジトリ共通)または--globalなし(現在のリポジトリのみ)で修正します。この2項目はコミットの著者情報として履歴に記録されるため、作業前に確認する習慣をつけると、意図しない名前やメールアドレスでのコミットを防げます。

user.name・user.emailを確認・修正する方法

user.name・user.emailの確認コマンド

現在有効な値は、項目名を指定して確認します。

git config user.name
git config user.email
Taro Yamada
taro@example.com

出力が空の場合は未設定です。その状態でコミットすると「Please tell me who you are」というエラーになるか、環境によってはPCのホスト名から自動生成された値が入ります。

global・localどちらの値か確認する

git config user.nameで表示されるのは、優先順位に従って選ばれた1つの値です。出どころを知りたいときは--show-originを付けます。

git config --show-origin user.name
file:/Users/taro/.gitconfig	Taro Yamada

パスが~/.gitconfigならglobal、.git/configならlocalの設定です。両方に値がある場合はlocalが優先されます。レベルごとの詳しい確認方法は次のセクションで解説します。

user.name・user.emailを修正する

修正は同じコマンドで新しい値を渡すだけです。--globalの有無で、変更の範囲が変わります。

コマンド変更範囲書き込み先
git config --global user.name "値"自分の全リポジトリ~/.gitconfig
git config user.name "値"現在のリポジトリのみ.git/config

普段使いの名前は--globalで登録し、仕事用と個人用でメールアドレスを分けたいリポジトリだけlocalで上書きするのが一般的な使い分けです。

# 全リポジトリ共通の設定を変更
git config --global user.name "Taro Yamada"
git config --global user.email "taro@example.com"

# このリポジトリだけ別のメールアドレスを使う
git config user.email "taro@work-example.co.jp"

localの設定はリポジトリのルートディレクトリで実行してください。リポジトリ外で--globalなしのコマンドを実行すると、fatal: not in a git directoryというエラーになります。

user.name・user.emailを削除する

設定を消して未設定に戻すには--unsetを使います。

git config --global --unset user.name
git config --unset user.email

-globalを付けなければlocalの設定が削除されます。localを消すと、globalの値が有効になります。削除方法の全体像はH2-6でまとめて扱います。

実務での注意点|過去のコミットの著者は変わらない

user.name・user.emailを修正しても、すでに作成したコミットの著者情報は書き換わりません。設定が反映されるのは、修正後に作るコミットからです。

git log -1 --format="%an <%ae>"
Taro Yamada <old-address@example.com>

直前のコミットだけを直したい場合は、設定を修正したうえでgit commit --amend --reset-authorを実行します。ただし、すでにpush済みのコミットを書き換えると履歴が食い違うため、共有ブランチでは行わないでください。

また、GitHubではコミットのメールアドレスとアカウントに登録したメールアドレスが一致しないと、コントリビューションとして集計されません。まず確認コマンドで現在の値を把握し、必要な範囲だけ修正しましょう。

globalとlocalの設定、どちらが有効か確認する方法

有効な設定を調べるには、git config --show-origin --get-all <項目名>で全レベルの値と出どころを確認するのが確実です。Gitは同じ項目が複数のレベルにあると、範囲の狭い設定を優先します。仕組みを理解しておけば、「設定したはずの値が反映されない」という状況でも原因をすぐ特定できます。

globalとlocalの設定、どちらが有効か確認する方法

system・global・localの違いと優先順位

Gitは設定ファイルを system → global → local の順に読み込み、後から読んだ値で上書きします。そのため、優先順位は「local > global > system」です。

レベル適用範囲読み込み順優先度主な用途
systemPC内の全ユーザー1番目低会社全体で統一したい設定
global自分のアカウント全体2番目中普段使いのユーザー情報・エディタ
local現在のリポジトリのみ3番目高案件ごとの例外設定

たとえばglobalでuser.email=taro@example.com、localでuser.email=taro@work-example.co.jpを設定した場合、そのリポジトリ内ではtaro@work-example.co.jpが使われます。

特定の項目がどのレベルで設定されているか調べる

-get-allと-show-originを組み合わせると、その項目が定義されているすべての場所が、読み込み順に表示されます。

git config --show-origin --get-all user.email
file:/Users/taro/.gitconfig	taro@example.com
file:.git/config	taro@work-example.co.jp

出力は上から下へ読み込まれた順で、最後の行が実際に有効な値です。この例では、localのtaro@work-example.co.jpが採用されます。git config user.emailだけを実行すると最後の値のみが返るため、上書きの有無までは分かりません。重複の確認には--get-allを使ってください。

Git 2.26以降であれば、パスの代わりにレベル名で確認できる--show-scopeも使えます。

git config --show-scope --get-all user.email
global	taro@example.com
local	taro@work-example.co.jp

local設定だけを確認する

現在のリポジトリにだけ書かれた設定を見るには、--localを付けます。

git config --local --list
core.repositoryformatversion=0
core.filemode=true
core.bare=false
remote.origin.url=https://github.com/taro/sample-site.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
user.email=taro@work-example.co.jp

-localはGitリポジトリの中でのみ使えます。リポジトリ外で実行するとfatal: --local can only be used inside a git repositoryというエラーになります。

global設定だけを確認する

自分のアカウントに共通する設定は--globalで確認できます。リポジトリの外でも実行可能です。

git config --global --list
user.name=Taro Yamada
user.email=taro@example.com
core.editor=code --wait
init.defaultbranch=main

system設定を見たい場合は--system --listを使います。

確認の流れ

  1. git config --show-scope --get-all <項目名>で、どのレベルに値があるかを見る
  2. 想定と違う場合は-local --listでリポジトリ固有の設定を疑う
  3. 値の修正・削除は、該当レベルのオプションを付けて実行する

「意図しない値が使われている」原因の多くは、localに残った古い設定です。有効な値を変えたいなら、まず出どころを確認してから該当レベルを修正しましょう。

国内シェアNo.1のエックスサーバーが提供するVPSサーバー『XServer VPS』

.gitconfigファイルの場所を確認する方法(Windows/Mac/Linux)

globalの設定ファイルはホームディレクトリ直下の.gitconfig、localの設定ファイルは各リポジトリの.git/configにあります。場所が分からなくても、git config --list --show-originを実行すれば、実際に読み込まれているファイルのパスを確認できます。OSごとの違いは主にホームディレクトリの表記です。

.gitconfigファイルの場所を確認する方法(Windows/Mac/Linux)

OSごとの設定ファイルの場所

レベルWindowsMac / Linux
systemC:\Program Files\Git\etc\gitconfig/etc/gitconfig
globalC:\Users\<ユーザー名>\.gitconfig~/.gitconfig
local<リポジトリ>\.git\config<リポジトリ>/.git/config

Windowsのsystem設定は、Git for Windowsの標準インストール先の例です。インストール先やバージョンにより異なる場合があります。また、Gitは~/.config/git/config(XDG形式)も読み込みます。~/.gitconfigがなくても、このファイルに設定が保存されている場合があります。

Windowsで.gitconfigを開く

globalの.gitconfigは%USERPROFILE%(C:\Users\Taroなど)にあります。エクスプローラーのアドレスバーに次を入力すると、ホームディレクトリを直接開けます。

%USERPROFILE%

.gitconfigは先頭がドットの隠しファイル扱いのため、見えない場合は「表示」→「表示」→「隠しファイル」にチェックを入れてください。Git BashやPowerShellでは、次のコマンドで内容を確認できます。

cat ~/.gitconfig
[user]
	name = Taro Yamada
	email = taro@example.com
[core]
	editor = code --wait
[init]
	defaultBranch = main

Mac・Linuxで.gitconfigを開く

Mac・Linuxでは~/.gitconfigがglobalの設定ファイルです。ドットファイルはFinderやファイラーで隠れるため、ターミナルから開くのが手軽です。

cat ~/.gitconfig
open ~/.gitconfig       # Mac:既定のアプリで開く
nano ~/.gitconfig       # Linux/Mac:ターミナル上で編集

Macのfinderで見たい場合は、ホームフォルダでCommand + Shift + .を押すと隠しファイルが表示されます。

リポジトリ内の.git/configを確認する

local設定は、リポジトリ直下の.gitフォルダ内にあるconfigファイル(拡張子なし)です。

cat .git/config
[core]
	repositoryformatversion = 0
	filemode = true
[remote "origin"]
	url = https://github.com/taro/sample-site.git
	fetch = +refs/heads/*:refs/remotes/origin/*
[user]
	email = taro@work-example.co.jp

直接編集する際は、次の点に注意してください。

  • [user]などのセクション名や、=前後の書式を崩さない(崩すとGitがエラーを出す)
  • 編集前にバックアップを取る
  • .gitフォルダ内のほかのファイルは触らない

書式ミスが不安な場合は、コマンド経由での編集をおすすめします。

git config –editでエディタから開く

-edit(短縮形e)を使うと、設定ファイルを既定のエディタで直接開けます。パスを覚えていなくても実行できるのが利点です。

git config --global --edit   # globalの.gitconfigを開く
git config --edit            # 現在のリポジトリの.git/configを開く

使用されるエディタはcore.editorの設定で決まります。未設定の場合は環境変数EDITOR、それもなければViなどのシステム既定のエディタが起動します。Viが開いて戸惑った場合は、:q!で保存せずに終了できます。

ファイルの場所は「global=ホーム直下」「local=.git内」と覚えておけば、OSが変わっても迷いません。

新世代レンタルサーバー『シンレンタルサーバー』

VSCode・SourceTree・Git Bashで設定を確認する方法

どのツールでも、確認できる内容はgit configの設定そのものです。VSCodeとGit Bashはコマンドで、SourceTreeは設定画面から確認します。使い慣れた環境から確認して問題ありません。

VSCode・SourceTree・Git Bashで設定を確認する方法
ツール確認方法向いている場面
VSCode統合ターミナルでコマンド実行コーディング中にすぐ確認したい
SourceTree設定画面(GUI)コマンドが苦手、視覚的に確認したい
Git Bashコマンド実行(タブ補完あり)Windowsで正確に確認・操作したい

VSCodeの統合ターミナルで確認する

VSCodeには、エディタ内でコマンドを実行できる統合ターミナルがあります。

  1. 確認したいリポジトリのフォルダをVSCodeで開く
  2. メニューの「ターミナル」→「新しいターミナル」を選ぶ(ショートカットはCtrl + ``、MacはControl + “)
  3. 画面下部に開いたターミナルにコマンドを入力する
git config --list --show-origin
file:/Users/taro/.gitconfig	user.name=Taro Yamada
file:/Users/taro/.gitconfig	user.email=taro@example.com
file:.git/config	remote.origin.url=https://github.com/taro/sample-site.git

開いたフォルダがカレントディレクトリになるため、localの設定もそのまま確認できます。エディタとターミナルを行き来せずに済むのがメリットです。Windowsでは既定がPowerShellの場合がありますが、git configのコマンドは同じように動作します。

SourceTreeのGUIで確認する

SourceTreeでは、設定画面でglobalとリポジトリごとの設定を確認・変更できます。

globalの設定(全リポジトリ共通)

  1. メニューの「ツール」→「オプション」を開く(Macは「Sourcetree」→「環境設定」)
  2. 「全般」タブの「デフォルトのユーザー情報」を確認する
  3. 表示された「フルネーム」と「メールアドレス」が、globalのuser.nameとuser.emailに相当する

リポジトリごとの設定(local)

  1. 対象リポジトリのタブを開き、右上の「設定」ボタンをクリックする
  2. 「リポジトリ設定」画面で「詳細」タブを選ぶ
  3. 「このリポジトリのユーザー情報」欄を確認する。「デフォルトのユーザー情報を使用」にチェックが入っていれば、globalの値が使われる

メニュー名はSourceTreeのバージョンやOSによって異なります。GUIのメリットは、設定の有無と適用範囲を画面上で視覚的に確認できる点です。

Git Bashで確認する

Git BashはWindows向けのターミナルで、Git for Windowsに同梱されています。フォルダを右クリックして「Open Git Bash here」を選ぶと、そのフォルダで起動します。

git config --list
git config user.name
Taro Yamada

Windowsでは、Git Bash上の~がC:\Users\<ユーザー名>に対応します。そのためcat ~/.gitconfigでglobalの設定ファイルも読めます。

タブ補完で入力を効率化する

Git Bashではタブ補完が標準で有効です。

  • git confまで入力してTabを押すとgit configに補完される
  • git config --まで入力してTabを2回押すと、使えるオプション(-global、-local、-listなど)が一覧表示される
  • git config user.まで入力してTabを2回押すと、user.nameやuser.emailなどの候補が表示される

オプション名や項目名を正確に入力でき、タイプミスも減ります。CLIのメリットは、結果が正確でコピーしやすく、スクリプトにも組み込める点です。

どのツールを選ぶか

設定の有無を目で確認したいならSourceTree、作業中にすぐ確認したいならVSCodeのターミナル、詳細な出どころまで調べたいならGit Bashが便利です。GUIで見た値が想定と違うときは、--show-origin付きのコマンドで出どころを確認すると原因を特定できます。

コストパフォーマンスに優れた高性能なレンタルサーバー

【Hostinger】

git configの設定を削除・変更する方法

設定の削除はgit config --unset <項目名>、セクションごとの削除はgit config --remove-section <セクション名>で行います。変更は、同じ項目に新しい値を渡すだけです。global・localのどちらを操作するかは、--globalなどのオプションで指定します。

git configの設定を削除・変更する方法

特定の設定だけを削除する(–unset)

1項目だけ消すときは--unsetを使います。対象のレベルを指定しないと、localが対象になります。

# localの設定を削除
git config --unset user.email

# globalの設定を削除
git config --global --unset core.editor

削除後は、git config --list --show-originで消えたことを確認できます。localを消した場合は、globalやsystemの値が有効になります。

同じ項目が複数行ある(remote.origin.fetchなど)場合、--unsetは「multiple values」というエラーになります。その場合は--unset-allを使ってください。

git config --unset-all remote.origin.fetch

セクションごと削除する(–remove-section)

[user]や[core]といったセクション全体を消すには--remove-sectionを使います。

git config --global --remove-section user
(出力なし。成功時は何も表示されない)

この例では、globalのuser.nameとuser.emailがまとめて削除されます。サブセクションを持つ項目は、remote.originのようにドットでつなげて指定します。

git config --remove-section remote.origin

設定の値を変更する

削除して作り直す必要はなく、新しい値で上書きできます。

git config --global user.name "Taro Suzuki"

複数値を持つ項目を上書きしたい場合は--replace-allを使います。

グローバル設定をすべて初期化する

globalの設定を全部消したい場合は、~/.gitconfigを削除するかリネームします。

注意:初期化は元に戻せません。 ユーザー情報、エイリアス、認証まわりの設定もすべて失われます。必ず事前にバックアップを取ってください。

# 1. バックアップを取る(必須)
cp ~/.gitconfig ~/.gitconfig.bak

# 2. 初期化(ファイルを削除)
rm ~/.gitconfig

Windowsの場合は、エクスプローラーで%USERPROFILE%を開き、.gitconfigをコピーしてから削除します。削除後はgit config --global --listを実行し、何も表示されなければ初期化できています。元に戻す場合は、バックアップを~/.gitconfigにコピーし直してください。

~/.config/git/configにも設定がある場合は、そちらも残っている点に注意してください。

設定を変更したのに反映されない場合のチェックリスト

変更が反映されないときは、次の項目を上から順に確認してください。

  • localに古い設定が残っていないか:git config --show-scope --get-all <項目名>で、localが上書きしていないか見る
  • 環境変数の影響がないか:GIT_CONFIG_GLOBALやGIT_CONFIG_SYSTEM(Git 2.32以降)、GIT_CONFIG_NOSYSTEMが設定されていると、読み込むファイルが変わる。env | grep GITで確認する(Windowsはset)
  • 項目名のタイプミスがないか:user.mailのような誤字でもエラーにならず、別の項目として保存される。git config --listで綴りを見直す
  • 実行したレベルが正しいか:-globalを付け忘れてlocalに保存していないか、逆にglobalを変えてlocalが優先されていないかを確認する
  • 別のユーザー・シェルで実行していないか:sudoで実行するとrootのホームの.gitconfigが対象になる。WSLとWindows側のGitも、それぞれ別の.gitconfigを持つ
  • includeで別ファイルを読み込んでいないか:.gitconfig内の[include]や[includeIf]が値を上書きしている場合がある。-show-originで出どころを確認する

原因の大半は、localの残存設定か実行環境の違いです。まず--show-originで「どのファイルの値が使われているか」を確認し、そのファイルを直接修正しましょう。

safe.directoryのセキュリティ警告を確認・解決する方法

「detected dubious ownership」エラーは、信頼するディレクトリをgit config --global --add safe.directory <パス>で登録すれば解決します。現在の登録状況はgit config --global --get-all safe.directoryで確認できます。全ディレクトリを許可する*指定は手軽ですが、セキュリティ上のリスクがあるため、原則として対象を絞って登録してください。

safe.directoryのセキュリティ警告を確認・解決する方法

エラーメッセージの実例

リポジトリの所有者と、コマンドを実行しているユーザーが異なると、次のエラーが表示されます。

fatal: detected dubious ownership in repository at '/var/www/sample-site'
To add an exception for this directory, call:

	git config --global --add safe.directory /var/www/sample-site

エラー文中の「dubious」は「疑わしい」という意味です。「dangerous」ではなく「dubious」と表示される点に注意してください。メッセージ内に、解決用のコマンドがそのまま案内されています。

なぜこのエラーが表示されるのか

このエラーは、他のユーザーが所有するディレクトリでのGit操作をブロックするセキュリティ機能によるものです。Git 2.35.2(2022年4月)で導入され、古いバージョンにも同様の修正版が提供されています。

背景には、脆弱性(CVE-2022-24765)があります。攻撃者が共有マシン上に.gitフォルダを仕込むと、別のユーザーがそのディレクトリでGitコマンドを実行した際に、.git/config内の悪意ある設定が実行される恐れがありました。この対策として、所有者が異なるリポジトリは既定で信頼しない仕様になっています。

次のような環境で発生しやすくなります。

  • Docker・WSLなど、ホストとコンテナでユーザーが異なる環境
  • 別ユーザーで作成したフォルダを共有しているサーバー
  • 外付けドライブやネットワークドライブ上のリポジトリ
  • sudoで実行した場合(所有者がrootと一致しない)

現在のsafe.directory設定を確認する

登録済みのディレクトリは、次のコマンドで確認します。

git config --global --get-all safe.directory
/var/www/sample-site
/home/taro/projects/blog

何も表示されなければ、登録はありません。safe.directoryは複数登録できるため、--get-allで全件を表示します。

この設定は、global・system・コマンドラインでの指定のみ有効です。リポジトリ内の.git/configに書いても、セキュリティ上の理由から無視されます。

safe.directoryにディレクトリを追加する

エラーの対象リポジトリを、パスを指定して追加します。

git config --global --add safe.directory /var/www/sample-site

追加後は、同じディレクトリでGitコマンドが実行できるようになります。複数のリポジトリで発生する場合は、エラーごとに1件ずつ追加してください。

Windowsでは、パスを/区切りで書きます。

git config --global --add safe.directory C:/Users/taro/projects/sample-site

全ディレクトリを許可する(*)とその注意点

すべてのディレクトリを信頼する場合は、*を指定します。

git config --global --add safe.directory '*'

シェルによるワイルドカード展開を防ぐため、*はシングルクォートで囲むのが安全です。この指定はGit 2.35.3以降で利用できます。

ただし、*を指定するとこのセキュリティ機能が無効になり、前述の脆弱性への保護がなくなります。次の点に注意してください。

  • 個人のPCなど、他者が書き込めない環境での利用に限る
  • 共有サーバーや不特定多数が使う環境では使わない
  • 一時的なCI・Docker環境以外では、個別パスの登録を優先する

safe.directoryの設定を削除する

登録を取り消すには、--unset-allまたは--fixed-value付きの--unsetを使います。

# 登録済みの全エントリを削除
git config --global --unset-all safe.directory

# 特定のパスだけ削除(値を文字列そのまま指定)
git config --global --fixed-value --unset safe.directory /var/www/sample-site

複数登録している場合、単なる--unsetは使えないため、全件削除は--unset-allを使います。--fixed-valueはGit 2.30以降で使えます。削除後は、--get-allで内容を再確認してください。

エラーが出た際は、まず所有者の違いが意図したものかを確認し、対象のパスだけを登録するのが安全な進め方です。

プロキシ設定・認証情報を確認する方法(実務でよく使う項目)

プロキシはgit config --get http.proxy、認証情報の保存方式はgit config --get credential.helperで確認できます。企業ネットワークやチーム開発では、この2つに加えてpull.rebaseやcore.autocrlfなどの値がpush・pullの失敗や履歴の乱れの原因になりやすいため、事前に確認しておくと安心です。

プロキシ設定・認証情報を確認する方法(実務でよく使う項目)

プロキシ設定(http.proxy)を確認する

社内ネットワークなど、プロキシサーバー経由で外部に接続する環境では、http.proxyを設定します。この設定は、HTTPSのURLでのclone・push・pullにも適用されます。

git config --get http.proxy
http://proxy.example.co.jp:8080

出力が空なら、Gitの設定としてはプロキシが未設定です。ただし、環境変数のhttp_proxy・https_proxy・all_proxyが設定されている場合は、Gitはそちらを参照します。http.proxyと環境変数の両方がある場合は、http.proxyが優先されます。設定の出どころと環境変数は、次のコマンドでまとめて確認できます。

git config --show-origin --get-regexp proxy
env | grep -i proxy
file:/Users/taro/.gitconfig	http.proxy http://proxy.example.co.jp:8080
https_proxy=http://proxy.example.co.jp:8080

Windowsのコマンドプロンプトでは、env | grep -i proxyの代わりにset | findstr /i proxyを使います。

企業ネットワークでの利用シーン

  • 社内LANからGitHubへのclone・pushで「Failed to connect」「Could not resolve host」が出る
  • 自宅ではつながるのに、出社すると接続できない(プロキシ設定が不足している)
  • 自宅に戻ってから接続できない(社内用の設定が残っている)

不要になった設定は、git config --global --unset http.proxyで削除できます。パスワード入りのURL(http://user:pass@proxy...)は設定ファイルに平文で残るため避けてください。

credential.helper(認証情報の保存方式)を確認する

HTTPS接続では、ユーザー名とパスワード(またはアクセストークン)の保存方式をcredential.helperで指定します。認証まわりの設定は[関連記事リンク]でも解説しています。

git config --get credential.helper
osxkeychain

OSごとの主な設定値は次のとおりです。

OS主な設定値保存先特徴
Windowsmanager(旧称manager-core)Windows資格情報マネージャーGit for Windowsに同梱。既定で有効
MacosxkeychainmacOSのキーチェーンキーチェーンアクセスで保存内容を確認できる
Linuxcacheメモリ上に一時保存既定は15分で消える。--timeoutで変更可能
Linuxstore~/.git-credentials平文で保存されるため、共有環境では避ける

何も表示されない場合は、認証情報が保存されず、操作のたびに入力を求められます。

チーム開発で確認しておきたい主要項目

次の項目は、メンバー間で値が食い違うと、コンフリクトや差分の混乱につながります。

項目名確認コマンド用途
pull.rebasegit config --get pull.rebasepull時にmergeかrebaseかを指定する。未設定だとpull時に警告が出る場合がある
remote.origin.urlgit config --get remote.origin.url接続先リポジトリのURL。HTTPSかSSHかも判別できる
core.autocrlfgit config --get core.autocrlf改行コードの自動変換。Windowsはtrue、Mac・Linuxはinputが一般的
core.editorgit config --get core.editorコミットメッセージ入力時に起動するエディタ
init.defaultBranchgit config --get init.defaultBranchgit init時の初期ブランチ名(Git 2.28以降)
core.ignorecasegit config --get core.ignorecaseファイル名の大文字小文字を区別するか。OSにより既定値が異なる

複数の項目をまとめて確認するなら、--get-regexpが便利です。

git config --get-regexp '^(pull|core|remote)\.'
core.editor code --wait
core.autocrlf input
pull.rebase false
remote.origin.url https://github.com/taro/sample-site.git

接続やチーム運用のトラブルは、これらの値を確認すると原因を絞り込めます。想定と違う値が出たときは、--show-originで出どころを特定してください。

ConoHa AI Canvas|ブラウザだけでできる本格的なAI画像生成

よくある質問(FAQ)

git configで設定したパスワードはどこに保存されている?

git config自体にパスワードを保存する項目はなく、保存先はcredential.helperの設定で決まります。Windowsなら資格情報マネージャー、Macならキーチェーン、Linuxでstoreを使っている場合は~/.git-credentialsです。storeは平文で保存されるため、共有環境では避け、cacheや暗号化して保存するヘルパーを選んでください。git config --get credential.helperで現在の方式を確認できます。

GitHubとGitLabでアカウントを使い分けたい場合は?

includeIfを使うと、ディレクトリ単位で設定を自動的に切り替えられます。まず~/.gitconfigに、フォルダごとの読み込み条件を書きます。

[user]
	name = Taro Yamada
	email = taro@example.com
[includeIf "gitdir:~/work/"]
	path = ~/.gitconfig-work

次に、~/.gitconfig-workに仕事用の設定を書きます。

[user]
	email = taro@work-example.co.jp

~/work/配下のリポジトリでは仕事用のメールアドレスが使われ、それ以外は個人用になります。gitdir:の末尾は/を付けてください。切り替わっているかは、git config --show-origin user.emailで確認できます。includeIfはGit 2.13以降で使えます。

git config –listで何も表示されないのはなぜ?

設定ファイルが存在しないか、空である可能性が高いです。まずgit config --global --listでglobalを、リポジトリ内でgit config --local --listでlocalを個別に確認します。globalが空なら、~/.gitconfigの有無を確認し、~/.config/git/configにも設定がないかを見てください。それでも空の場合は、env | grep GITでGIT_CONFIG_GLOBALなどの環境変数がファイルの読み込み先を変えていないか、sudoやWSLなど別ユーザー・別環境で実行していないかを疑いましょう。新規インストール直後なら、未設定で正常な状態です。

まとめ

Gitの設定は、system・global・localの3レベルで管理され、優先順位は「local > global > system」です。git config --listで全体を、git config <項目名>で個別の値を確認でき、--show-originを付ければ設定の出どころまで特定できます。user.name・user.emailの修正、safe.directoryの警告対応、プロキシや認証情報の確認も、基本は同じコマンド体系の応用です。設定が反映されないときは、localの残存設定や実行環境の違いを疑うと原因を絞り込めます。

まずはgit config --list --show-originを実行して、自分の環境の設定と出どころを確認してみましょう。

タイトルとURLをコピーしました