無料のソースコード管理 (SCM: software configuration management) ソフト Git で、Git の動作を指定する config の設定項目の値を取り消すコマンドを紹介します。
設定項目が優先度の異なる3つの場所に設定されていることについてと、各場所の設定項目の値の取得、現在のリポジトリで採用されている値の取得を行うコマンドについても紹介します。

※Git-2.49.0 (64 bit) を使用します。
Git の config 情報は3つの場所に設定可能
Git の config の各項目の設定は system, global, local の3つの場所に配置できます。
Gitには、
git config
と呼ばれるツールが付属します。これで、どのようにGitが見えて機能するかの全ての面を制御できる設定変数を取得し、設定することができます。 これらの変数は三つの異なる場所に格納されうります:Git – 最初のGitの構成
/etc/gitconfig
ファイル: システム上の全てのユーザーと全てのリポジトリに対する設定値を保持します。 もし--system
オプションをgit config
に指定すると、明確にこのファイルに読み書きを行ないます。~/.gitconfig
か~/.config/git/config
ファイル: 特定のユーザーに対する設定値を保持します。--global
オプションを指定することで、Gitに、明確にこのファイルに読み書きを行なわせることができます。- 現在使っているリポジトリのGitディレクトリにある
config
ファイル(.git/config
のことです): 特定の単一リポジトリに対する設定値を保持します。
system は、 global, local に設定されていない全てのリポジトリの設定として参照されます。
local は、最優先で参照されますが、config の設定の影響範囲はそのリポジトリに限られます。
設定の場所 | 参照される優先度 | 影響範囲 |
system | ☆ | ☆☆☆ |
global | ☆☆ | ☆☆ |
local | ☆☆☆ | ☆ |
現在の config の設定の確認
Git の config の各項目の値を確認するには git config get コマンドを使います。
※ –system ,–global, –local のいずれかのオプションを指定することで、各場所の値を取得できます。
git config get 項目名
get
Emits the value of the specified key. If key is present multiple times in the configuration, emits the last value. If
--all
is specified, emits all values associated with key. Returns error code 1 if key is not present.指定されたキーの値を出力します。キーが構成内に複数回存在する場合、最後の値を出力します。 –all が指定されている場合は、キーに関連付けられたすべての値を出力します。キーが存在しない場合は、エラー コード 1 を返します。
Git – git-config Documentation と Google 翻訳
以下では、最初に system, global, local の各場所の core.autocrlf 項目の値を取得しています。
G:\Dev\StudyTortoiseGit\RepoAutoCRLF6>git config get --system core.autocrlf
true
G:\Dev\StudyTortoiseGit\RepoAutoCRLF6>git config get --global core.autocrlf
G:\Dev\StudyTortoiseGit\RepoAutoCRLF6>git config get --local core.autocrlf
false
- system では true
- global では未設定
- local では false
を設定しています。
そのあとに、項目の設定場所を指定しないで値を取得することで、現在のリポジトリで採用されている値を取得できます。
G:\Dev\StudyTortoiseGit\RepoAutoCRLF6>git config get core.autocrlf
false
例では、一番優先される local に false が設定されていたので、 false が表示されました。
Git の config の設定を消去
今回は、 local に設定されている core.autocrlf 項目自体を消去して、さらに上位の global, system の設定に合わせます。
git config unset 項目名
git config set で設定した local (現在のリポジトリでのみ有効) の項目と値を除去して、さらに上位( system > global > local) の同じ項目の設定に合わせるには、unset を用います。
unset
Unset value for one or more config options. By default, this command refuses to unset multi-valued keys. Passing
--all
will unset all multi-valued config options, whereas--value
will unset all config options whose values match the given pattern.1 つ以上の構成オプションの値の設定を解除します。デフォルトでは、このコマンドは複数値キーの設定解除を拒否します。 –all を渡すと、すべての複数値の構成オプションの設定が解除され、–value を渡すと、指定されたパターンに値が一致するすべての構成オプションの設定が解除されます。
Git – git-config Documentation と Google 翻訳
local の core.autocrlf 項目を unset で消去しました。
G:\Dev\StudyTortoiseGit\RepoAutoCRLF6>git config unset --local core.autocrlf
その後、get で各場所の設定を確認すると、さきほど local に設定されていた core.autocrlf 項目(値は false )は消えて、何も表示されない未設定の状態が確認できます。
G:\Dev\StudyTortoiseGit\RepoAutoCRLF6>git config get --system core.autocrlf
true
G:\Dev\StudyTortoiseGit\RepoAutoCRLF6>git config get --global core.autocrlf
G:\Dev\StudyTortoiseGit\RepoAutoCRLF6>git config get --local core.autocrlf
場所を指定しない get で現在採用されている値を確認すると、local の項目 (値は false) は消えて、 global の項目は最初から未設定なので、 system の値 true が採用され false から true に変わりました。
G:\Dev\StudyTortoiseGit\RepoAutoCRLF6>git config get core.autocrlf
true
以下は、今回行った git コマンドの全体の流れです。

今回使用したリポジトリと core.autocrlf 項目について
今回使用したリポジトリと、core.autocrlf 項目については以下の記事も参照してください。
まとめ
今回は、無料のソースコード管理 (SCM: software configuration management) ソフト Git で、Git の動作を指定する config の設定項目の値を取り消すコマンドを紹介しました。
設定項目が優先度の異なる3つの場所に設定されていることについてと、各場所の設定項目の値の取得、現在のリポジトリで採用されている値の取得を行うコマンドについても紹介しました。
参照サイト Thank You!
記事一覧 → Compota-Soft-Press
コメント