Open1
git configについて

git config
の深掘り
git config
とは?
git config は、Gitの設定を管理するためのコマンドです。このコマンドを使うことで、ユーザー名やメールアドレス、エイリアス、リポジトリ固有の設定、さらにはエディタや差分ツールの設定など、さまざまな設定を行うことができます。
git config --list
git config --list
で今現在どんな設定がされているかを見ることができる
git config --list
yamamototaiyou@yamamotyounoAir git_tutorial % git config --list
credential.helper=osxkeychain
user.name=
user.email=
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
alias.ci=commit
alias.st=status
alias.br=branch
configの範囲について
--global
- ユーザー単位での設定で、全リポジトリに適用されます。
- 通常、ホームディレクトリにある .gitconfig ファイルに保存されます。
- 例: ユーザー名、メールアドレス、エディタなど。
--system
- システム全体での設定です。すべてのユーザーとリポジトリに影響します。
- 通常、/etc/gitconfig に保存されます。
- 例: システム全体で使う設定(例:グローバルのGitの設定、管理者設定など)。
--local
- リポジトリ単位の設定です。リポジトリ固有の設定を行います。
- 通常、リポジトリの .git/config に保存されます。
- 例: 特定のリポジトリ内で使う設定(例:リモートリポジトリのURL)。
--worktree
- 特定のワークツリー(作業ツリー)に関連した設定です。主に複数の作業ツリーがある場合に使用します。
- このオプションはあまり一般的には使われませんが、Gitの作業ツリー(git worktree コマンドを使って複数の作業ツリーを管理する場合)に関連します。
- 例: 特定の作業ツリーに対する設定。
設定の優先順位
設定は、上から下に向かって優先度が高い順に適用されます。つまり、設定が重複している場合、以下のように適用されます:
1. --worktree: 最も優先されます(作業ツリー固有の設定)。
2. --local: リポジトリ単位の設定が適用されます。
3. --global: ユーザー単位の設定が適用されます。
4. --system: システム全体の設定が適用されます。
したがって、もしリポジトリ固有の設定とユーザー全体の設定が衝突する場合、リポジトリ固有の設定(--local)が最優先されます。
--show-origin
git config --list
では設定がglobalであるかわかりません。なのでoptionをつけることで確認ができます。
git config --list --show-origin
base) yamamototaiyou@yamamotyounoAir git_tutorial % git config --list --show-origin
file:/opt/homebrew/etc/gitconfig credential.helper=osxkeychain
file:/Users/yamamototaiyou/.gitconfig user.name=
file:/Users/yamamototaiyou/.gitconfig user.email=
file:/Users/yamamototaiyou/.gitconfig filter.lfs.clean=git-lfs clean -- %f
file:/Users/yamamototaiyou/.gitconfig alias.st=status
file:/Users/yamamototaiyou/.gitconfig alias.br=branch
file:/Users/yamamototaiyou/.gitconfig alias.co=checkout
file:.git/config core.repositoryformatversion=0
file:.git/config core.filemode=true
file:.git/config core.bare=false
file:.git/config core.logallrefupdates=true