🏹
Gitコマンド入門::Gitカスタマイズ機能(config,その2)第七十一回
みなさんこんにちは! 前回に引き続き、git のカスタマイズ機能、config を学習して行きますね。前回はローカルのconfigファイルを設定しましたけど、今日は、グローバル、システムのconfigファイルを編集して行きます!
今日の学習は、こちら!
前回の記事はこちらから!
git本家本元の情報はこちらから!
グローバルconfigファイルの存在を確認から!
$ cat /home/shiozumi/.gitconfig
[user]
name = Makoto Shiozumi
email = shiozumi@esmile-hd.com
[branch]
autosetupmerge = true
私のCentOS7.xの環境では、個人のホームディレクトリに、.gitconfig ファイルがあります。
コマンドで確認 git config --list --global
user.name=Makoto Shiozumi
user.email=shiozumi@esmile-hd.com
branch.autosetupmerge=true
前回もコマンドでの確認と、直接ファイル出力も行いましたから、もう、この関連性は慣れてきたと思います。[user] name = 値 -> user.name = 値 ですね!
Win環境は、C:\Users{username}.gitconfig
C:\Users\shiozumi>type .gitconfig
[gui]
recentrepo = C:/Users/shiozumi/Documents/myTest
C:\Users\shiozumi>
私も、Windows環境では、とくにgitを使っていませんでしたけど、いつの間にかインストールされていましたね。(^▽^;)
それでは、いつもの環境作りから!
$ mkdir func0071 && cd $_
$ git init
Initialized empty Git repository in /home/shiozumi/mygit/func0071/.git/
$ git config --list
user.name=Makoto Shiozumi
user.email=shiozumi@esmile-hd.com
branch.autosetupmerge=true
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
git config --list は、--local + --global + --system
本来なら、体系的なものを初回にお伝えする予定でしたけど、gitのコンフィグファイルは、3つ
のレベルがあります。--list のみで実行すると、3つのコンフィグの全ての情報を出力します。
オプション | 場所,ファイル名 | 補足事項 | 優先順位 |
---|---|---|---|
--local | .git/.config | 各リポジトリ毎の設定 | 高 |
--global | /home/user-name/.gitconfig | 個人別の設定 | 中 |
--system | /etc/gitconfig | システム内の共通設定 | 低 |
git config --list --system
コマンドで確認できます。
一番の親元は、/etc/gitconfig ファイルです。$ git config --list --system
fatal: unable to read config file '/etc/gitconfig':
そのようなファイルやディレクトリはありません
// あちゃ~ いきなりエラーでしたね。(^▽^;)
// ということで、追加してみます!
$ sudo git config --system user.name root
$ sudo git config --system user.email root@localhost
// 無事、ファイルも作成されていますね。
$ cat /etc/gitconfig
[user]
name = root
email = root@localhost
// --system のみの表示です。
$ git config --list --system
user.name=root
user.email=root@localhost
// すべてのコンフィグファイルの設定です!
$ git config --list
user.name=root
user.email=root@localhost
user.name=Makoto Shiozumi
user.email=shiozumi@esmile-hd.com
// 中略~
git config --local user.name func0071
ローカルのコンフィグファイルにも、user.name を追加してみましょう!
user.name=root
user.email=root@localhost
user.name=Makoto Shiozumi
user.email=shiozumi@esmile-hd.com
// 中略~
user.name=func0071
これで、user.name は、ローカル、グローバル、システムの3つに設定されましたね。では、早速、コミットして試してみましょう!
$ echo "func0071" > README.md
$ git add README.md
$ git commit -m "1st"
[master (root-commit) cf1537b] 1st
1 file changed, 1 insertion(+)
create mode 100644 README.md
// log 確認
$ git log
commit cf1537ba113da152339b11d0a23844ee4a181356 (HEAD -> master)
Author: func0071 <shiozumi@esmile-hd.com> // <!-- ここ!
Date: Tue Apr 6 08:50:12 2021 +0900
1st
shiozumi@esmile-hd.com
Author: func0071- user.name = func0071 で、ローカルの設定が反映されました!
- user.email = shiozumi@esmile-hd.com で、グローバルの設定ですね!
ローカルとグローバルの、user.name を削除!
$ git config --local --unset user.name
$ git config --global --unset user.name
$ git config --list
user.name=root // <!-- /etc/gitconfig に設定された。root のみ!
user.email=root@localhost
user.email=shiozumi@esmile-hd.com
// 中略~
もう一度、2nd コミットしてみます!
$ echo "func0071 2nd" > README.md
$ git add README.md
$ git commit -m "2nd"
[master c16408d] 2nd
1 file changed, 1 insertion(+), 1 deletion(-)
// log 確認
$ git log
commit c16408ddd69e583eee0e439aacfa407c74295e0b (HEAD -> master)
Author: root <shiozumi@esmile-hd.com> // <!-- ここ!
Date: Tue Apr 6 08:58:25 2021 +0900
2nd
commit cf1537ba113da152339b11d0a23844ee4a181356
Author: func0071 <shiozumi@esmile-hd.com> // <!-- ここ!
Date: Tue Apr 6 08:50:12 2021 +0900
1st
shiozumi@esmile-hd.com
Author: root- user.name = root で、システム全体の設定が反映されました!
- user.email = shiozumi@esmile-hd.com 変わらず、グローバルの設定!
まとめ
さあ~ 今回は、ファイルの存在場所の確認と、その優先順位が、実際にどう機能するのか試してみましたけど、みなさんも、是非、お試しください! 尚、--system に、実際にどんな値を入力するのかは、Google検索して調べて見ても、サンプルは少なさそうでしたね。そもそも、私の環境に置いても、最初はファイルが存在しない状態でしたしね~ (^▽^;)
それでは、今回はここまで、お疲れ様でした!
Discussion