Gitの設定ファイルgitconfig
には種類があり、影響する範囲がそれぞれのレベルによって違います
検証した環境
1 | git | 2.32.0 |
gitconfigの種類
設定出来るレベルは4段階あり、
それぞれ設定するファイル・影響範囲などが異なります。
レベル | 設定ファイル | 範囲 | 影響範囲の広さ | 優先度 |
---|---|---|---|---|
system | /usr/local/etc/gitconfig | システム全体 | 1 | 4 |
global | ~/.gitconfig | ユーザ全体 | 2 | 3 |
local | リポジトリの.git/config | 該当リポジトリ | 3 | 2 |
worktree | リポジトリの.git/config.worktree | 該当リポジトリの該当worktree | 4 | 1 |
影響範囲は system
> global
> local
> worktree
の順で、
仮に全てを設定した場合の優先される順は影響範囲の逆順になります。
例えば以下のケースの場合、影響範囲は global
> system
のため
設定したユーザは同じst
というaliasがあったとしても "status -s"
が優先されます。
# 全ユーザ共通でaliasを設定
$ git config --system alias.st status
# 自ユーザでは↑のaliasの設定を変更(優先度が global > system のため)
$ git config --global alias.st "status -s"
一般的に使用する設定レベルについて
1番よく利用されるのは global
の~/.gitconfig
いわゆる gitconfig
と呼ばれるgitの設定ファイルがこれですね。
そしてプロジェクトやチームによってプラスで local
の.git/config
に設定を加える、
という事が多いイメージです。
よく使われる2つ↓
レベル | 設定ファイル | 範囲 | 影響範囲の広さ | 優先度 |
---|---|---|---|---|
global | ~/.gitconfig | ユーザ全体 | 2 | 3 |
local | リポジトリの.git/config | 該当リポジトリ | 3 | 2 |
利用ケース
利用ケースとして、
global
にはそのマシンでメインとなるGitHubのアカウントの名前・メールアドレスを登録しておき、
$ git config --global user.name "プライベート用の名前"
$ git config --global user.email "xxx@gmail.com"
local
には該当リポジトリの会社用のGitHubのアカウントの名前・メールアドレスを登録する
$ git config --local user.name "会社用の名前"
$ git config --local user.email "xxx@company.jp"
こうする事でこのリポジトリでのコミットは xxx@company.jp
の人のものとして扱われます。
利用ケースと偉そうに書いておきながら、↑の使い方以外で使った事がないという…😅w
余談
この記事を書いてて知ったのですが、使い道が難しそうなworktree
というレベルもあります 🤔
Git - git-config Documentation
worktree
は他の記事で見かけないので、最近のgitのバージョンで増えたのかもしれませんね。