🏹

Gitコマンド入門::Gitカスタマイズ機能(config)第七十回

2021/04/05に公開

Gitコマンド入門::Gitカスタマイズ機能(config)第七十回

みなさんこんにちは! 今回からは、git のカスタマイズ機能、config を学習して行きましょう! 今回からは、8.1 Git のカスタマイズ - Git の設定 こちらのページに沿って進めていきますね。

実際のページは、こちらです!

https://git-scm.com/book/ja/v2/Git-のカスタマイズ-Git-の設定

前回の記事はこちらから!

https://zenn.dev/shiozumi/articles/06d75a5b1432c5

git本家本元の情報はこちらから!

https://git-scm.com/book/ja/v2

それでは、いつもの環境作成から!

$ mkdir func0070 && cd $_

$ git init
Initialized empty Git repository in /home/shiozumi/mygit/func0070/.git/

$ ls .git/
HEAD  branches  config  description  hooks  info  objects  refs

// gitのローカル環境設定ファイル、config が作成されましたね!!

.git/config は、ローカルの環境設定!

こちらは、git init の時に作成される、各ローカルフォルダ内に存在する、リポジトリ毎のコンフィグ設定ファイルになりますね。荒っぽいですが、早速、中身を確認!

$ cat .git/config
[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
	
// 私の環境での、ローカルのconfigファイルです!

git config --local -l のコマンドで確認!

$ git config --local -l
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true

次は、お行儀よく、gitコマンドで確認しますね。ちなみに、--local は省略可能です![1]
[core] 項目のみの設定となっていますね。

git config --local core.editor vim

それでは、月並みですけど、編集するエディターの設定を、vim にしてみますね。

$ git config --local core.editor vim
$ 
// 特に実行後のメッセージは何も表示されませんけど・・・

$ git config --local -l
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
core.editor=vim

// core.editor の項目が増えて、vim が登録されました!

git config --local --unset core.editor

それでは、またまた基本中の基本で削除しましょう! --unset

$ git config --local --unset core.editor
$ 
// 特に実行後のメッセージは何も表示されませんけど・・・

$ git config --local -l
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true

// core.editor の項目が無事に削除されました!

これで、追加と削除ができましたね!

  1. git config --local core.editor vim
  2. git config --local --unset core.editor

git config --local --edit

次は、ファイルを直接編集してみましょう!

$ git config --local --edit

// vi .git/config でも実際には同じ!(笑)
// ここでは、私は強引にも、aaa=bbb と追記!

$ cat .git/config
[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
        aaa = bbb  // <!-- 実際には、存在しない項目でも、追加可能!
	
$ git config --local --list
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
core.aaa=bbb
// ↑↑↑ ちゃんと認識していますね(苦笑) 

では、更に[temp]項目を、追加!

$ cat .git/config

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
        aaa = bbb
[temp]
        ccc = ddd

// ↑↑↑ 強引にも、temp 項目を追加!

$ git config --local --list

core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
core.aaa=bbb // <!-- 追加済
temp.ccc=ddd // <!-- 新規に追加分も認識されました!

では、--unset で削除しましょう!

$ git config --local --unset core.aaa
$ git config --local --unset temp.ccc

$ git config --local --list
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
// 無事に削除ができました!

$ cat .git/config
[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true

// 直接、ファイルの中身を見ても、無事に削除されていますね!

そして最後は、もう一度、コマンドラインから追加!

$ git config --local core.aaa bbb
$
$ git config --local temp.ccc ddd
$
// 相変わらず、なにもメッセージは、表示されませんけど・・・

$ git config --local --list
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
core.aaa=bbb // <!-- 追加されました!
temp.ccc=ddd // <!-- 追加されました!

$ cat .git/config
[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
        aaa = bbb
[temp]
        ccc = ddd

// はい、追加されました!

もっと、試してみたい方は、こちらをどうぞ!

https://git-scm.com/docs/git-config.html

ちらっと見てみると、git config --local --remove-section core なんてやると、一括削除できそうですよね~

$ git config --local --remove-section core
$ git config --local --remove-section temp

$ git config --local --list
$
// なにも表示されません!

$ cat .git/config
$
// なにも表示されません!

$ ls -l .git/config
-rw-rw-r-- 1 shiozumi shiozumi 0  45 11:39 .git/config

// ファイルはありますが、容量は、0バイトですね。

まとめ

さあ、いかがでしたか? 今回は、--local オプションを付けて、ローカルのconfigファイルの編集のみ試しましたけど、実際には、--global とか、--system なども可能です。ファイルは、それぞれ、個人の作業フォルダ以下と、/etc/ の下にconfigファイルができると書いてありますけど、こちらは、また次回やって行きますね!

それでは、今回はここまで、お疲れ様でした!

https://twitter.com/esmile2013

次回の記事はこちら!

https://zenn.dev/shiozumi/articles/bb67fc4eab37bf

脚注
  1. --local を省略すると、--global の設定も表示されるので、今回は、明確に区別するためにも、毎回、--local オプションを付けています。 ↩︎

Discussion