git config --all について
alias gitconf="git config --global"
gitconf my.test1 abc
とした場合、~/.gitconfig
に[my] test1 = abc
というようなセクションが追加される
普通の使い方:
gitconf my.test1 def
とすると、上記でabc
がdef
に置き換わるgitconf --add my.test1 abc
とすると、~/.gitconfig
では[my] test1 = def test1 = abc
となり、設定値が2つに増える
この状態で
gitconf [--get] my.test1
とすると、abc
が得られる- つまり、最後に設定したものが得られる
- 複数の値を得たい場合、
gitconf --get-all my.test1
とすれば LF 区切りで2つの値が得られる - このとき、
gitconf --get-all --null my.test1
とすると出力される値は LF の代わりに\0
で区切られる ここで
my.test1
の設定値を変更しようとgitconf my.test1 ghi
とするとwarning: my.test1 has multiple values error: cannot overwrite multiple values with a single value Use a regexp, --add or --replace-all to change my.test1
と怒られる
一番わかりやすいオプションは
--replace-all
であり、これは既存の設定値をすべて削除し新しいものに置き換えるdef
という設定をghi
に書き換えたい場合、gitconf my.test1 ghi def
とする[my] test1 = ghi test1 = abc
ここで第3引数に指定されているのは、既存の設定を示す正規表現であり、この場合に限れば
^d
と言った指定も可能- このとき指定された正規表現にマッチする設定値がない場合、設定は新しく追加される(!)
調べてないこと
--replace-all
使用時にもvalue_regex
が使用可能だがこれはどういう意味7日--replace-all
を使った場合のみマッチした設定値をすべて書き換える?--replace-all
を使用した場合新しい設定値はどこと入れ替えられるのか?
- そうでない場合はじめに見つかった一つのみ書き換える?